When comparing Yeoman vs Bower, the Slant community recommends Yeoman for most people. In the question“What are the best tools for front-end JavaScript development?” Yeoman is ranked 6th while Bower is ranked 8th. The most important reason people chose Yeoman is:
Yeoman has an active community with new generators being created at a rapid pace. Because of the momentum behind the community, you can expect good support and adoption for new tools and frameworks promptly after they come out.
Ranked in these QuestionsQuestion Ranking
Pros
Pro Active community
Yeoman has an active community with new generators being created at a rapid pace. Because of the momentum behind the community, you can expect good support and adoption for new tools and frameworks promptly after they come out.
Pro Huge number of generators for scaffolding your project
Yeoman generators allow you to quickly set up a new project. Invoked with the scaffolding tool 'yo' they provide a boilerplate & tooling selection. There are over 1000 generators, including generators for ember, angular & backbone, to choose from, the majority of which are community maintained.
Pro Allows you to choose between different build systems
Yeoman supports both major build systems - Grunt and Gulp. These build systems will help you automate tasks such as minification & concatenation of files, running tests, deploying and live-updating your webpage among many others.
Pro Free and open source
Yeoman is free, open source and licensed under BSD.
Pro Support for the package manager of your choice
Yeoman supports both Bower and npm, and is flexible in regard to tools to allow it to work with a wider range of project requirements.
Pro Standardized workflow process
Yeoman wants webapp development to be more standardized under the "Yeoman workflow" banner. As such it encourages the use of a specific combination of tools - a scaffolding tool (yo), a build tool (grunt, gulp, etc) and a package manager (bower, npm).
Pro Generators can be composed with other generators
Yeoman's scaffolding system allows generators to rely on other generators allowing for better code reuse and standardization between generators that use a common sub-component.
Pro Cross-platform
As a command line tool it works on OS X, Linux & Windows.
Pro Works with the package manager directly
Yeoman doesn't just scaffold your project, but also helps you integrate with your package manager directly, so you can manage your entire project with it.
Pro Developers can create their own plugins
Developers can also create their own Yeoman generator which are practically plugins with which Yeoman works. Generators are basically Node.js modules and can be created just like any other Node module.
There is also a very detailed and useful guide on how to create a generator on the Yeoman official website.
Pro Manages non-JavaScript components
Bower is flexible enough that you can manage pretty much any package you would need on the front-end, so you can manage all your dependencies with one tool, including CSS, boilerplate, fonts and more.
Pro Simplicity provides more flexibility
Bower doesn't try to handle too much of the workflow process, which means it's more flexible, and can be incorporated into more workflows. It tries to just do package management well and nothing else, which is why so many workflow wrappers support it. Because it doesn't try to do too much vertical integration, it also means that the list of supported components that it manages is huge.
Pro Largest front-end specific package registry
Although npm is the largest javascript package manager, Bower is the most popular one built specifically for the front-end. With over 16000 components in its registry, pretty much every component you can think of is supported.
Pro Easily integrates with other tools
Because of Bower's focus on simplicity, it makes it much easier to integrate with other tools, so it has a wide range of support with workflow wrappers and task managers such as yeoman and grunt.
Pro Requires a flat dependency tree
While nested dependencies are better for backend modules that need lots of inter-dependency, they lead to bloated file sizes. Flat dependencies are better for frontend optimization, where file size needs to be more closely managed.
Pro Does not store components in a registry
You always get package directly from owner's repository, i.e. you will always get latest version as soon as its version tag is committed without need of waiting until owner publishes updated package.
Pro Simpler to manage varied code
Because Bower makes few assumptions about the source and format of packages, it's easier to apply it to more of your packages
Pro AMD & CJS compatible
Bower strives to be as simple of a package manager as possible and puts as few restrictions on the packages in the registry as possible, making it the most flexible package manager with the most potential packages.
Cons
Con Combining Yeoman and backend frameworks can bring problems
Combining Yeoman and a backend framework such as Django, Rails or Laravel can create problem because the project structure of Yeoman may not be compatible with that of the backend project. It can be tuned to work but for small projects it can be relatively time consuming.
Con Seems like a redundant package manger
NPM with Webpack/Browserify can handle all the dependencies for both back-end and front-end. The only place where Bower may be useful is for projects which use libraries not supported by NPM, such as Polymer.
Con Deprecated
As of May 2017 Bower has been deprecated and will not receive any updates with new features. Bugs will still be fixed though for existing projects that use Bower.
Con Does not store components in a registry
Bower installs components directly from urls and repositories, which makes it more susceptible to components being taken down, with fewer guarantees about their availability.
Con Difficult to create bundles
To create a minified bundle of all the required JS dependencies other tools need to be used.
For example a JavaScript task runner which will automatically concatenate JavaScript files and minify them will be needed. Although it's done automatically, it's still extra work because the task runner needs to be configured.
Con Lack of signing of packages on the repository
Anyone can register their package on Bower's GIT registry - on one side, this brings a lot of ease to developers, but on the other hand, this can lead to security issues because the packages are not signed.
Con Less packages than npm due to a smaller ecosystem
- Bower: 36,000 packages
- Npm: 161,876 total packages (of course, many work only on the server)