Getting started with Yeoman 1.0 beta
Keep in mind that this is a beta and will have bugs. Don't use in production.
The Yeoman workflow is comprised of three core tools for improving your productivity and satisfaction when building a web app. These tools are:
Each of these projects are independently maintained by their respective communities, but work well together as a part of a prescriptive workflow for keeping you effective. Let’s walk through what these binaries can do.
yo
Yo is maintained by the Yeoman project and offers web application scaffolding, utilizing scaffolding templates we refer to as generators. You typically install yo and any generators you think you might use via npm.
Installing yo and some generators
First you'll need to install yo
(the webapp generator is included):
npm install -g yo grunt-cli bower
This will automatically install grunt
and bower
for you, if you are using npm 1.2.10 or above. You can also install those manually: npm install -g grunt-cli bower
.
If you have installed Grunt globally in the past, you will need to remove it first: npm uninstall -g grunt
On Windows we suggest you use an improved command line tool such as Console2 or PowerShell to improve the experience.
Basic scaffolding
yo webapp
This is the default generator and will scaffold out a project containing HTML5 Boilerplate, jQuery and Modernizr. Twitter Bootstrap can be optionally installed from the prompt you will be presented.
Each project created with yo will also pull in relevant Grunt tasks which we feel are needed or useful for your workflow.
The webapp generator is considered the simplest possible start for a webapp. We also provide some framework generators can be used to scaffold out a project and later views, models, controllers and so on.
Scaffolding an AngularJS app
Before you can create an angular app you need to install the generator
npm install -g generator-angular
Generator must be installed locally unless you have upgraded to 1.0.0-beta.4
, to upgrade use npm cache clean && npm update -g yo
.
After that you can run
yo angular
or if you intend to minify your code
yo angular --minsafe
Here, we are first generating the file structure for a basic web application and then writing a number of boilerplate files for a new AngularJS application on top of it. This includes boilerplate directives and controllers as well as scaffolded Karma unit tests.
Scaffolding out Angular pieces
yo angular:controller myController
yo angular:directive myDirective
yo angular:filter myFilter
Yo scaffolds can also be used to scaffold further pieces of your application - we call these sub-generators.
In the AngularJS framework for example your application is made up of a number of pieces including controllers, directives and filters. You can actually scaffold out any of these pieces (and more) during your development workflow as shown above.
Each framework generator has further documentation available noting what sub-generators it supports.
Creating your own generators
See Generators.
Bower
Bower is a package manager for the web which allows you to easily manage dependencies for your projects. This includes assets such as JavaScript, images and CSS. It is maintained by Twitter and the open-source community.
Managing packages using Bower can be done using the following commands:
bower search <dep> - search for a dependency in the Bower registry
bower install <dep>..<depN> - install one or more dependencies
bower list - list out the dependencies you have installed for a project
bower update <dep> - update a dependency to the latest version available
Bower can be used with a project scaffolded using yo.
Create a basic webapp, search for a jQuery plugin with Bower and install it
yo webapp
bower search jquery-bbq
> BBQ has been found. Let’s install it!
bower install jquery-bbq
> installs jquery, jquery-bbq
Create an AngularJS app, install Angular UI from Bower, include in your page and build it.
yo angular
bower install angular-ui
# then add <script src="components/angular-ui/build/angular-ui.js"></script>
# and <link rel="stylesheet" href="components/angular-ui/build/angular-ui.css"/>
grunt
It’s as simple as that.
grunt
Grunt is a task-based command-line tool for JavaScript projects. It can be used to build projects, but also exposes several commands which you will want to use in your workflow. Many of these commands utilize Grunt tasks behind the hood which are maintained by the Yeoman team.
Grunt commands
grunt - build an optimized, production-ready version of your app
grunt server - preview an app you have generated (with Livereload)
grunt test - run the unit tests for an app
These commands can be used together with the yo binary for a seamless development workflow:
Create a basic web app, preview it, test, build
yo webapp
grunt server
grunt test
grunt
I used Yeoman 0.9.x and would like to upgrade to 1.0. What do I do?
We have an upgrade guide to assist with moving your 0.9.x projects over to 1.0. Note that we no longer offer a yeoman binary which wraps both grunt and bower, but instead use a new yo binary for your scaffolding needs. The guide will explain how this workflow applies to upgrading in more detail.