I'm a backend developer, and slightly confused by npm, bower, gulp, grunt, and Yeoman. Whenever I ask someone what their purpose is, the answer tends to boil down to dependency manager - for all of them. Surely, we don't need four different tools that all do the same?
Can someone please explain what each of these is good for in as few sentences as possible - if possible just one per tool, using language a five year old (with development skills) could understand?
For example:
- SVN stores, manages, and keeps track of changes to our source code
I have used maven, Jenkins, nexus and ant in the past; maybe you could compare the tools above to these?
Also feel free to add other front-end tools to the list.
Here is what I have found out so far - not sure it's correct, though:
- bower dependency manager for front-end development/JS libraries, uses a flat dependency list
- npm dependency manager for node.js server, can resolve transitive dependencies/dependency trees
- grunt runs tasks, much like Jenkins, but locality on the command line
- Yeoman provided scaffolding, i.e skeleton projects
- gulp same as grunt, but written in js only
- node.js server for js apps?
- git decentralized SCM/VCS, counterpart to svn/cvs
Am I close? :)