2019-11-05 14:55:08 -05:00
|
|
|
---
|
2019-11-18 21:01:39 +02:00
|
|
|
section: cli-commands
|
2019-11-05 14:55:08 -05:00
|
|
|
title: npm-dedupe
|
|
|
|
description: Reduce duplication
|
|
|
|
---
|
2012-08-21 15:29:03 -07:00
|
|
|
|
2019-11-18 21:01:39 +02:00
|
|
|
# npm-dedupe(1)
|
2012-08-21 15:29:03 -07:00
|
|
|
|
2019-11-05 14:55:08 -05:00
|
|
|
## Reduce duplication
|
2012-08-21 15:29:03 -07:00
|
|
|
|
2019-11-05 14:55:08 -05:00
|
|
|
### Synopsis
|
|
|
|
```bash
|
|
|
|
npm dedupe
|
|
|
|
npm ddp
|
2016-03-29 23:30:51 -07:00
|
|
|
|
2019-11-05 14:55:08 -05:00
|
|
|
aliases: find-dupes, ddp
|
|
|
|
```
|
|
|
|
|
|
|
|
### Description
|
2012-08-21 15:29:03 -07:00
|
|
|
|
|
|
|
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:
|
|
|
|
|
2019-11-05 14:55:08 -05:00
|
|
|
```bash
|
|
|
|
a
|
|
|
|
+-- b <-- depends on c@1.0.x
|
|
|
|
| `-- c@1.0.3
|
|
|
|
`-- d <-- depends on c@~1.0.9
|
|
|
|
`-- c@1.0.10
|
|
|
|
```
|
2012-08-21 15:29:03 -07:00
|
|
|
|
2019-11-18 21:01:39 +02:00
|
|
|
In this case, `npm dedupe` will transform the tree to:
|
2012-08-21 15:29:03 -07:00
|
|
|
|
2019-11-05 14:55:08 -05:00
|
|
|
```bash
|
|
|
|
a
|
|
|
|
+-- b
|
|
|
|
+-- d
|
|
|
|
`-- c@1.0.10
|
|
|
|
```
|
2012-08-21 15:29:03 -07:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2015-10-09 23:13:57 -07:00
|
|
|
The deduplication algorithm walks the tree, moving each dependency as far
|
|
|
|
up in the tree as possible, even if duplicates are not found. This will
|
|
|
|
result in both a flat and deduplicated tree.
|
|
|
|
|
2012-08-21 15:29:03 -07:00
|
|
|
If a suitable version exists at the target location in the tree
|
|
|
|
already, then it will be left untouched, but the other duplicates will
|
|
|
|
be deleted.
|
|
|
|
|
2015-10-09 23:13:57 -07:00
|
|
|
Arguments are ignored. Dedupe always acts on the entire tree.
|
2012-08-21 15:29:03 -07:00
|
|
|
|
2015-10-09 23:13:57 -07:00
|
|
|
Modules
|
2012-08-21 15:29:03 -07:00
|
|
|
|
2015-10-09 23:13:57 -07:00
|
|
|
Note that this operation transforms the dependency tree, but will never
|
|
|
|
result in new modules being installed.
|
2013-10-24 09:21:59 -07:00
|
|
|
|
2019-11-05 14:55:08 -05:00
|
|
|
### See Also
|
2012-08-21 15:29:03 -07:00
|
|
|
|
2020-07-07 13:41:27 -05:00
|
|
|
* [npm ls](/cli-commands/npm-ls)
|
|
|
|
* [npm update](/cli-commands/npm-update)
|
|
|
|
* [npm install](/cli-commands/npm-install)
|