table of contents
- bullseye 7.5.2+ds-2
- bullseye-backports 8.5.5~ds1-1~bpo11+1
- testing 9.1.3~ds1-1
- unstable 9.2.0~ds1-1
npm-dedupe - Reduce duplication
npm dedupe npm ddp aliases: find-dupes, ddp
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.
For example, consider this dependency graph:
a +-- b <-- depends on email@example.com | `-- firstname.lastname@example.org `-- d <-- depends on c@~1.0.9
In this case, npm dedupe will transform the tree to:
a +-- b +-- d `-- email@example.com
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.
In some cases, you may have a dependency graph like this:
a +-- b <-- depends on firstname.lastname@example.org +-- email@example.com `-- d <-- depends on firstname.lastname@example.org
During the installation process, the email@example.com dependency for b was placed in the root of the tree. Though d's dependency on firstname.lastname@example.org could have been satisfied by email@example.com, the newer firstname.lastname@example.org dependency was used, because npm favors updates by default, even when doing so causes duplication.
Running npm dedupe will cause npm to note the duplication and re-evaluate, deleting the nested c module, because the one in the root is sufficient.
To prefer deduplication over novelty during the installation process, run npm install --prefer-dedupe or npm config set prefer-dedupe true.
Arguments are ignored. Dedupe always acts on the entire tree.
Note that this operation transforms the dependency tree, but will never result in new modules being installed.
Using npm find-dupes will run the command in --dry-run mode.
- npm ls /cli-commands/ls
- npm update /cli-commands/update
- npm install /cli-commands/install