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
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
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:
- Made sure you're on the latest version
- Read our documentation and README to ensure the issue hasn't been noted or solved already
- Used the search feature to ensure that the bug hasn't been reported before
- Included as much information about the bug as possible, including any output you've received, what OS and version you're on.
- Shared the output from
echo $PATH $NODE_PATHand
brew doctoras this can also help track down the issue.
Issues can be submitted via the issues tab on our GitHub repo.
What tools do Yeoman make use of?
- Twitter Bower
- Node Build Script
- HTML5 Boilerplate
NPM appears to have installed yeoman but
yeoman still gives me "command not found".
This usually happens when you install Node through Homebrew, since it puts Node modules in a directory that's not in your PATH.
==> 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:
brew uninstall node and download and install Node from their website.
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.
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
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:
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
bower_components folders to the blacklist. So, to run
bower.json file, you need to run
npm install & bower install
And check if these folders are created correctly.