When comparing Metalsmith vs Gatsby JS, the Slant community recommends Gatsby JS for most people. In the question“What are the best static site generators?” Gatsby JS is ranked 9th while Metalsmith is ranked 13th.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Flexible beyond a static site generator
Because metalsmith is at its core focused on transforming directories of files, it can be used for more than just static site generation, and could be used as a build tool, a documentation generator, or any use that requires file transformations.
Pro Designed around plugins
Everything in metalsmith is a plugin, and it is designed to make it easy to write new ones.
Pro Chaining API
Metalsmith uses a chaining API that's consistent and simple to use:
Metalsmith(__dirname)
.use(markdown)
.use(templates('handlebars'))
.build();
Pro No page reload when navigating
Pro Based on React.js
Editing markup is phenomenally easy when you have components.
Pro Live reload
Every change you make can be almost immediately seen in a browser.
Pro A lot of plugins
Gatsby offers a lot of plugins to integrate tools like SASS, typescript, styled components, etc.
Pro Very active development
Gatsby is very actively developed and the maintainers are very helpful.
Pro Built-in code and data splitting
Pro Open Source
Pro Take content from any source
Gatsby can generate the pages with content from any sources like Drupal, Wordpress, Contentful, etc. If the source plugin is not coded for your solution, you can create it.
Pro A static site and a React app in one
The static pages are generated by Server Site Rendering of the React app. So you have all benefits of a static site, and all benefits of a React app, which is very powerful.
Pro GraphQL Data Layer
Pro A lot of examples
Gatsby have a lot of examples sites in his github repository.
Pro Beautiful out-of-the-box blog starters
Cons
Con Small community
The Metalsmith community is still fairly small compared to the more popular options. This results in a lack of learning resources and difficulty finding support from experienced users. However, a slack group has recently been started.
Con Not client enabled API chaining
According to the spec on API chaining, the API request/response need to associate an API object to an corresponding controller/action/uri to be able to validate and handle the request/response and the datasets.
Without that, the consuming client service cannot properly validate or relate the datasets from one to the other. Links have no relational value and the api object creates the relationship between the datasets while maintaining an api/dataset relationship with the corresponding controller/action/uri
As such, the current methodology supported would not be able to be called by the client not supported by the client in a RESTFUL manner
Con A bit raw
You'll maybe have to tweak some JSX if you want something that's not covered by available themes.