Frequently Asked Questions

What are the goals of the project?

The short-term goals for Yeoman are to provide developers with an improved tooling workflow so that they can spend less time on process and more time focusing on building beautiful web applications. Initially, we hope to make it as easy as possible to work with existing frameworks and tools developers are used to using.

Long-term, the project may also assist developers with creating applications using modern technologies such as Web Components.

What is a command-line interface?

A command-line interface is a means for developers to interact with a system using text commands. On Linux or OSX, this is often done using the terminal and on Windows we use the command shell or a third-party tool such as Cygwin.

What is a package manager?

A package manager runs through a command-line interface and is a tool for automating the process of installing, upgrading, configuring and managing dependencies for projects. An example of a package management registry is NPM.

How does Yeoman differ from Grunt?

Yeoman builds upon a number of open-source tools to offer an opinionated workflow that helps developers achieve common tasks more easily. Grunt.js is one of these tools and powers our underlying build process and task plugin architecture.

On top of this architecture, we've highly customized tasks, profiles and systems which work well together and also provide developers with features like our generator system and Twitter Bower integration. Yeoman takes care of configuring your Gruntfile and setup to support Sass, CoffeeScript and Require.js/r.js out of the box. With additional features like wiring, an improved serve and init, we like to think of ourselves as a helper project on top of Grunt.

Developers are free to continue using any Grunt tasks with Yeoman and there should remain a good level of cross-tool task compatibility.

How does Yeoman differ from tools like Brunch or BBB?

We love tools like Brunch and Grunt-BBB and feel that they offer a great solution for developers wishing to scaffold with frameworks like Backbone.js and Ember. With the Yeoman generator system, as we've ported over the Rails Generator system to work with Node, we feel we have an interesting opportunity to take application scaffolding in a new direction - one where it's easier for any developer to write scaffolds, support multiple testing frameworks, capture their own boilerplates and easily re-use them and so on.

How do I register or unregister a package on Bower?

Packages can be registered on Bower using the register command. e.g bower register myawesomepackagename git://github.com/youraccount/yourrepo. We recommend reading the Bower documentation before doing this to ensure that your repo includes the necessary files to supporting being installed.

Will the project be providing Generators for popular frameworks?

Our goal is to facilitate both developers and the community with the tools needed to create rich web applications easily. With that goal in mind, we'll be providing a great API (and docs) to our Generators system with examples of how to implement samples, but will rely on the community to create and maintain Generators for popular frameworks. This will allow us to focus on making Yeoman better without he distractions of maintaining a large number of Generators.

What license is Yeoman released under?

Yeoman is released under a BSD license.

What should I do before submitting an issue through GitHub?

Thanks for your interest in submitting an issue. In order for us to help you please check that you've completed the following steps:

Issues can be submitted via the issues tab on our GitHub repo.

What tools do Yeoman make use of?

NPM appears to have installed yeoman but yeoman still gives me "command not found".

It's likely your PATH does not account for global NPM modules just yet. Better documentation forthcoming but until then, read this comment and this thread.

This usually happens when you install Node through Homebrew, since it puts Node modules in a directory that's not in your PATH.

From Homebrew:

==> Caveats
Homebrew installed npm.
We recommend prepending the following path to your PATH environment
variable to have npm-installed binaries picked up:
  /usr/local/share/npm/bin

Quick fix for advanced users is to put the following in your .bashrc/.zshrc file: export PATH=/usr/local/share/npm/bin:$PATH

For beginners brew uninstall node and download and install Node from their website.

I'm getting EMFILE, too many open files

EMFILE mean you've reached the OS limit of concurrently open files. There aren't much we can do about it, however you can increase the limit yourself.

Add ulimit -n [number of files] to your .bashrc/.zshrc file to increase the soft limit.

If you reach the OS hard limit, you can follow this StackOverflow answer to increase it.

What should I use for documenting my app

View the details within #152 ticket for recommended solutions for documentation generation

Why does Yeoman require a CLA?

It keeps the IP clean and helps to prevent frivolous lawsuits around who owns what software. Basically the thing all of us want to avoid anyhow. In summary, the CLA asserts that when you donate fixes or documentation, you both own the code that you're submitting and that Google can in turn license that code to other people. (In this case, making it available under the BSD license)

So yeah it's an extra hurdle, but it's something we can't avoid here. This is a Google open source project and thems are the rules.

Just FWIW, here are some other projects that require a similar agreement, jQuery, Firefox, Sizzle, Dojo, Plone, Fedora, Cordova/Phonegap, Apache, Flex.

More: * http://incubator.apache.org/ip-clearance/index.html * http://wiki.civiccommons.org/Contributor_Agreements

How do I use Compass sprites and the image_url helper with Yeoman?

Follow the guide provided in this gist.

How can I disable Insight or Update Notifier?

You can use use a command line flag to disable them. Eg. yo webapp --no-insight

Insight: --no-insight
Update Notifier: --no-update-notifier

You can also add yeoman_test as an environment variable with any value to permanently disable both.

Can I use livereloading with a custom webserver?

You bet! You can remove the connect task from your Gruntfile and manually insert this snippet into your HTML:

<!-- livereload script -->
<script>document.write('<script src="http://'
 + (location.host || 'localhost').split(':')[0]
 + ':35729/livereload.js?snipver=1" type="text/javascript"><\/script>')
</script>

After that, simply run grunt serve like you normally would and enjoy automatic page refreshes.

What should I do after cloning a web application generated with Yeoman?

Yeoman creates a .gitignore file for you. This file adds node_modules and bower_components folders to the blacklist. So, to run grunt serve and download the Javascript dependencies listed in the bower.json file, you need to run Bash npm install & bower install And check if these folders are created correctly.