title: How to resolve all npm dependencies in tree to single version
body: <p>I am somewhat new to npm and I have been working on converting an existing build process to use grunt with npm package management. We have a number of internal components that we build our apps upon. This results in a dependency tree that can get fairly complex. As a simplified example, consider:</p>
  
  <pre><code>module-bcm@1.1.0
  ├─┬ module-help@1.0.8
  │ └── module-translation@1.2.1
  └─┬ module-validation@1.0.6
    └── module-translation@1.2.2
  </code></pre>
  
  <p>In the maven world the module-translation package would be resolved to a single version and the build system then knows which package to include into the app.</p>
  
  <p>In npm, I'm finding that the full tree is created in the node_modules directory, following the method described <a href="https://www.npmjs.org/doc/files/npm-folders.html" rel="noreferrer">here, under the section: Cycles, Conflicts, and Folder Parsimony</a>.</p>
  
  <ol>
  <li>Are there any tools out there to resolve to a single version?
  
  <ol>
  <li>I prefer this approach so I can use glob patterns to include all the resolved dependencies into the app.</li>
  </ol></li>
  <li>Is it a bad idea to have the system resolve to a single version in npm?
  
  <ol>
  <li>Of course, this can result in incompatible versions between dependencies, but that beast is there whether the dependencies are resolved to a single version systematically or manually. Are there other potential issues?</li>
  </ol></li>
  </ol>
  
  <p>There is a related question asked here, but with no answer: <a href="https://stackoverflow.com/questions/9679730/npm-nested-dependency-management">npm nested dependency management</a>.</p>