Roots vs Metalsmith
When comparing Roots vs Metalsmith, the Slant community recommends Metalsmith for most people. In the question“What are the best static site generators?” Metalsmith is ranked 13th while Roots is ranked 18th. The most important reason people chose Metalsmith is:
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.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Active development
Roots has heavy corporate sponsorship and is worked on very actively as a full time job. That means you can rely on it.
Pro Quick deploys
You can deploy to heroku, github pages, s3, etc. with a single command.
Pro Dynamic content
Roots supports dynamic content like jekyll for every compiler and language.
Pro Currently going through an upgrade
Roots is currently in the process examining how to leverage newer technologies to make Roots even better. You can see the new project on github: https://github.com/carrot/roots-mini
Here is the blog post explaining the next phase of Roots: https://medium.com/@jescalan/eaa10c75eb22#.uacjziaej
Here is the stack they're experimenting with:
- jade - for markup
- babel - for JS and JS transforms
- postcss - for CSS transforms
- webpack - as the core compiler
As this is a work in process, it just means the future of Roots continues to look great.
Pro Custom compilers
Not only does roots support a huge number of languages and compilers out of the box, it also allows you to insert custom compilers if you want. Fun fact, roots is the only static site generator that supports dogescript
Pro Multipass compiles
Roots compiles files once for each extension, which allows for some advanced options if you get to that stage
Pro Client-side templates
Roots will precompile your templates into js, which makes it really smooth to work with client-side MV* frameworks.
Pro Quick
Since roots is written in node, everything is compiled in parallel rather than in series, making it very quick.
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();
Cons
Con No i18n (Internationalization)
There is no i18n support out of the box. And there is only one extension that does i18n compilation with a limited feature set.
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