Yeoman, the opinionated web app tool-chain-saw, hits 1.0

Screen Shot 2013-08-23 at 16.20.07Yeoman, a collection of tools and practices for creating and developing web applications, has reached version 1.0. Written using Node.js to host the command-line tools, Yeoman combines three independently developed major components, Yo, an application scaffolding tool, grunt, the build tool, and bower for package management and brings them together as a way to speed up application building with community contributed code generators, including Angular, WordPress, Backbone, Ember, Firefox-os and many more.

When an generator is run, it can ask the user about various options such as creating a Bootstrap template or whether to include various dependencies. Yeoman then generates all the infrastructure files needed. A developer can now run “grunt server” and see the results in a browser. The server is live reloading so changes can be seen immediately. There’s also automatic compilation for CoffeeScript and Compass and automated linting. There’s also simple package management and PhantomJS Unit testing for headless verification. Its not just app creation, there’s also generators for deployment and other steps in the life-cycle or for generating elements of applications.

A fifteen minute tutorial video, presented by Addy Osmani of the Yeoman team, shows all the Yeoman workflow in action building a ToDo app, including deploying it to Heroku.

Yeoman is BSD licensed Google project which first emerged at Google I/O 2012. As such, Google have a CLA for contributions of code to the project. Note though the components are independent; [Bower]( is a Twitter project and Grunt was created and sponsered by Bocoup. In many ways is shows the best of open source; proprietary tools would have many hoops to jump through to get this intermingled. Yeoman looks like the swiss-army-toolchain-saw of web application development tools and I suspect is likely to be picked up by even more developers, especially now it has hit 1.0. The generator idea was compelling when it appeared in Ruby on Rails and to have it in a more generalised form is extra beefy.