What are npm, bower, gulp, Yeoman, and grunt good for?
<p>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?</p>

<p>Can someone please explain what each of these is good for <strong>in as few sentences as possible</strong> - if possible just one per tool, using language a five year old (with development skills) could understand?</p>

<p>For example:</p>

<ul>
<li><strong>SVN</strong> stores, manages, and keeps track of changes to our source code</li>
</ul>

<p>I have used maven, Jenkins, nexus and ant in the past; maybe you could compare the tools above to these?</p>

<p>Also feel free to add other front-end tools to the list.</p>

<p>Here is what I have found out so far - not sure it's correct, though:</p>

<ul>
<li><strong>bower</strong> dependency manager for front-end development/JS libraries, uses a flat dependency list</li>
<li><strong>npm</strong> dependency manager for node.js server, can resolve transitive dependencies/dependency trees</li>
<li><strong>grunt</strong> runs tasks, much like Jenkins, but locality on the command line</li>
<li><strong>Yeoman</strong> provided scaffolding, i.e skeleton projects</li>
<li><strong>gulp</strong> same as grunt, but written in js only</li>
<li><strong>node.js</strong> server for js apps?</li>
<li><strong>git</strong> decentralized SCM/VCS, counterpart to svn/cvs</li>
</ul>

<p>Am I close? :)</p>