UNPKG

npm

Version:

a package manager for JavaScript

215 lines (194 loc) 6 kB
<html><head> <title>npm-dedupe</title> <style> body { background-color: #ffffff; color: #24292e; margin: 0; line-height: 1.5; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; } #rainbar { height: 10px; background-image: linear-gradient(139deg, #fb8817, #ff4b01, #c12127, #e02aff); } a { text-decoration: none; color: #0366d6; } a:hover { text-decoration: underline; } pre { margin: 1em 0px; padding: 1em; border: solid 1px #e1e4e8; border-radius: 6px; display: block; overflow: auto; white-space: pre; background-color: #f6f8fa; color: #393a34; } code { font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; font-size: 85%; padding: 0.2em 0.4em; background-color: #f6f8fa; color: #393a34; } pre > code { padding: 0; background-color: inherit; color: inherit; } h1, h2, h3 { font-weight: 600; } #logobar { background-color: #333333; margin: 0 auto; padding: 1em 4em; } #logobar .logo { float: left; } #logobar .title { font-weight: 600; color: #dddddd; float: left; margin: 5px 0 0 1em; } #logobar:after { content: ""; display: block; clear: both; } #content { margin: 0 auto; padding: 0 4em; } #table_of_contents > h2 { font-size: 1.17em; } #table_of_contents ul:first-child { border: solid 1px #e1e4e8; border-radius: 6px; padding: 1em; background-color: #f6f8fa; color: #393a34; } #table_of_contents ul { list-style-type: none; padding-left: 1.5em; } #table_of_contents li { font-size: 0.9em; } #table_of_contents li a { color: #000000; } header.title { border-bottom: solid 1px #e1e4e8; } header.title > h1 { margin-bottom: 0.25em; } header.title > .description { display: block; margin-bottom: 0.5em; line-height: 1; } footer#edit { border-top: solid 1px #e1e4e8; margin: 3em 0 4em 0; padding-top: 2em; } </style> </head> <body> <div id="banner"> <div id="rainbar"></div> <div id="logobar"> <svg class="logo" role="img" height="32" width="32" viewBox="0 0 700 700"> <polygon fill="#cb0000" points="0,700 700,700 700,0 0,0"></polygon> <polygon fill="#ffffff" points="150,550 350,550 350,250 450,250 450,550 550,550 550,150 150,150"></polygon> </svg> <div class="title"> npm command-line interface </div> </div> </div> <section id="content"> <header class="title"> <h1 id="npm-dedupe">npm-dedupe</h1> <span class="description">Reduce duplication in the package tree</span> </header> <section id="table_of_contents"> <h2 id="table-of-contents">Table of contents</h2> <div id="_table_of_contents"><ul><li><a href="#synopsis">Synopsis</a></li><li><a href="#description">Description</a></li><li><a href="#see-also">See Also</a></li></ul></div> </section> <div id="_content"><h3 id="synopsis">Synopsis</h3> <pre lang="bash"><code>npm dedupe npm ddp aliases: ddp </code></pre> <h3 id="description">Description</h3> <p>Searches the local package tree and attempts to simplify the overall structure by moving dependencies further up the tree, where they can be more effectively shared by multiple dependent packages.</p> <p>For example, consider this dependency graph:</p> <pre><code>a +-- b &lt;-- depends on c@1.0.x | `-- c@1.0.3 `-- d &lt;-- depends on c@~1.0.9 `-- c@1.0.10 </code></pre> <p>In this case, <code>npm dedupe</code> will transform the tree to:</p> <pre lang="bash"><code>a +-- b +-- d `-- c@1.0.10 </code></pre> <p>Because of the hierarchical nature of node’s module lookup, b and d will both get their dependency met by the single c package at the root level of the tree.</p> <p>In some cases, you may have a dependency graph like this:</p> <pre><code>a +-- b &lt;-- depends on c@1.0.x +-- c@1.0.3 `-- d &lt;-- depends on c@1.x `-- c@1.9.9 </code></pre> <p>During the installation process, the <code>c@1.0.3</code> dependency for <code>b</code> was placed in the root of the tree. Though <code>d</code>’s dependency on <code>c@1.x</code> could have been satisfied by <code>c@1.0.3</code>, the newer <code>c@1.9.0</code> dependency was used, because npm favors updates by default, even when doing so causes duplication.</p> <p>Running <code>npm dedupe</code> will cause npm to note the duplication and re-evaluate, deleting the nested <code>c</code> module, because the one in the root is sufficient.</p> <p>To prefer deduplication over novelty during the installation process, run <code>npm install --prefer-dedupe</code> or <code>npm config set prefer-dedupe true</code>.</p> <p>Arguments are ignored. Dedupe always acts on the entire tree.</p> <p>Note that this operation transforms the dependency tree, but will never result in new modules being installed.</p> <p>Using <code>npm find-dupes</code> will run the command in <code>--dry-run</code> mode.</p> <h3 id="see-also">See Also</h3> <ul> <li><a href="../cli-commands/find-dupes.html">npm find-dupes</a></li> <li><a href="../cli-commands/ls.html">npm ls</a></li> <li><a href="../cli-commands/update.html">npm update</a></li> <li><a href="../cli-commands/install.html">npm install</a></li> </ul> </div> <footer id="edit"> <a href="https://github.com/npm/cli/edit/latest/docs/content/commands/npm-dedupe.md"> <svg role="img" viewBox="0 0 16 16" width="16" height="16" fill="currentcolor" style="vertical-align: text-bottom; margin-right: 0.3em;"> <path fill-rule="evenodd" d="M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25a1.75 1.75 0 01.445-.758l8.61-8.61zm1.414 1.06a.25.25 0 00-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 000-.354l-1.086-1.086zM11.189 6.25L9.75 4.81l-6.286 6.287a.25.25 0 00-.064.108l-.558 1.953 1.953-.558a.249.249 0 00.108-.064l6.286-6.286z"></path> </svg> Edit this page on GitHub </a> </footer> </section> </body></html>