1NPM-DEDUPE(1)                                                    NPM-DEDUPE(1)
2
3
4

NAME

6       npm-dedupe - Reduce duplication in the package tree
7
8   Synopsis
9         npm dedupe
10         npm ddp
11
12         aliases: ddp
13
14   Description
15       Searches  the  local  package tree and attempts to simplify the overall
16       structure by moving dependencies further up the tree, where they can be
17       more effectively shared by multiple dependent packages.
18
19       For example, consider this dependency graph:
20
21         a
22         +-- b <-- depends on c@1.0.x
23         |   `-- c@1.0.3
24         `-- d <-- depends on c@~1.0.9
25             `-- c@1.0.10
26
27       In this case, npm dedupe will transform the tree to:
28
29         a
30         +-- b
31         +-- d
32         `-- c@1.0.10
33
34       Because  of  the  hierarchical  nature of node's module lookup, b and d
35       will both get their dependency met by the single c package at the  root
36       level of the tree.
37
38       In some cases, you may have a dependency graph like this:
39
40         a
41         +-- b <-- depends on c@1.0.x
42         +-- c@1.0.3
43         `-- d <-- depends on c@1.x
44             `-- c@1.9.9
45
46       During  the  installation  process,  the  c@1.0.3  dependency for b was
47       placed in the root of the tree.  Though d's dependency on  c@1.x  could
48       have  been satisfied by c@1.0.3, the newer c@1.9.0 dependency was used,
49       because npm favors updates by default, even when doing so causes dupli‐
50       cation.
51
52       Running npm dedupe will cause npm to note the duplication and re-evalu‐
53       ate, deleting the nested c module, because the one in the root is  suf‐
54       ficient.
55
56       To  prefer  deduplication over novelty during the installation process,
57       run npm install --prefer-dedupe or npm config set prefer-dedupe true.
58
59       Arguments are ignored. Dedupe always acts on the entire tree.
60
61       Note that this operation transforms the dependency tree, but will never
62       result in new modules being installed.
63
64       Using npm find-dupes will run the command in --dry-run mode.
65
66   Configuration
67       <!--  AUTOGENERATED  CONFIG  DESCRIPTIONS  START --> <!-- automatically
68       generated, do not edit manually --> <!--  see  lib/utils/config/defini‐
69       tions.js -->
70
71   global-style
72       • Default: false
73
74       • Type: Boolean
75
76
77       Causes  npm  to install the package into your local node_modules folder
78       with the same layout it uses with the global node_modules folder.  Only
79       your  direct dependencies will show in node_modules and everything they
80       depend on will be flattened in their node_modules folders.  This  obvi‐
81       ously  will  eliminate  some  deduping.  If  used with legacy-bundling,
82       legacy-bundling will be preferred.  <!--  automatically  generated,  do
83       not edit manually --> <!-- see lib/utils/config/definitions.js -->
84
85
86   legacy-bundling
87       • Default: false
88
89       • Type: Boolean
90
91
92       Causes  npm  to  install the package such that versions of npm prior to
93       1.4, such as the one included with node 0.8, can install  the  package.
94       This  eliminates all automatic deduping. If used with global-style this
95       option will be preferred.  <!-- automatically generated,  do  not  edit
96       manually --> <!-- see lib/utils/config/definitions.js -->
97
98
99   strict-peer-deps
100       • Default: false
101
102       • Type: Boolean
103
104
105       If set to true, and --legacy-peer-deps is not set, then any conflicting
106       peerDependencies will be treated as an install  failure,  even  if  npm
107       could reasonably guess the appropriate resolution based on non-peer de‐
108       pendency relationships.
109
110       By default, conflicting peerDependencies deep in the  dependency  graph
111       will  be  resolved using the nearest non-peer dependency specification,
112       even if doing so will result in some packages receiving a  peer  depen‐
113       dency outside the range set in their package's peerDependencies object.
114
115       When  such  and override is performed, a warning is printed, explaining
116       the conflict and the packages involved. If --strict-peer-deps  is  set,
117       then  this  warning is treated as a failure.  <!-- automatically gener‐
118       ated, do not edit manually --> <!-- see lib/utils/config/definitions.js
119       -->
120
121
122   package-lock
123       • Default: true
124
125       • Type: Boolean
126
127
128       If  set  to false, then ignore package-lock.json files when installing.
129       This will also prevent writing package-lock.json if save is true.
130
131       When package package-locks are disabled, automatic pruning of  extrane‐
132       ous  modules  will  also be disabled. To remove extraneous modules with
133       package-locks disabled use npm prune.  <!-- automatically generated, do
134       not edit manually --> <!-- see lib/utils/config/definitions.js -->
135
136
137   omit
138       • Default:  'dev'  if the NODE_ENV environment variable is set to 'pro‐
139         duction', otherwise empty.
140
141       • Type: "dev", "optional", or "peer" (can be set multiple times)
142
143
144       Dependency types to omit from the installation tree on disk.
145
146       Note that these dependencies are still resolved and added to the  pack‐
147       age-lock.json or npm-shrinkwrap.json file. They are just not physically
148       installed on disk.
149
150       If a package type appears in both the --include and --omit lists,  then
151       it will be included.
152
153       If  the  resulting omit list includes 'dev', then the NODE_ENV environ‐
154       ment variable will be set to 'production' for  all  lifecycle  scripts.
155       <!--  automatically  generated,  do  not  edit  manually  -->  <!-- see
156       lib/utils/config/definitions.js -->
157
158
159   ignore-scripts
160       • Default: false
161
162       • Type: Boolean
163
164
165       If true, npm does not run scripts specified in package.json files.
166
167       Note that commands explicitly intended to run a particular script, such
168       as  npm start, npm stop, npm restart, npm test, and npm run-script will
169       still run their intended script if ignore-scripts is set, but they will
170       not run any pre- or post-scripts.  <!-- automatically generated, do not
171       edit manually --> <!-- see lib/utils/config/definitions.js -->
172
173
174   audit
175       • Default: true
176
177       • Type: Boolean
178
179
180       When "true" submit audit reports alongside the current npm  command  to
181       the  default registry and all registries configured for scopes. See the
182       documentation for npm help audit for  details  on  what  is  submitted.
183       <!--  automatically  generated,  do  not  edit  manually  -->  <!-- see
184       lib/utils/config/definitions.js -->
185
186
187   bin-links
188       • Default: true
189
190       • Type: Boolean
191
192
193       Tells npm to create symlinks (or .cmd shims on Windows) for package ex‐
194       ecutables.
195
196       Set  to  false  to have it not do this. This can be used to work around
197       the fact that some file systems don't support symlinks, even on  osten‐
198       sibly Unix systems.  <!-- automatically generated, do not edit manually
199       --> <!-- see lib/utils/config/definitions.js -->
200
201
202   fund
203       • Default: true
204
205       • Type: Boolean
206
207
208       When "true" displays the message at the end of  each  npm  install  ac‐
209       knowledging  the  number  of  dependencies looking for funding. See npm
210       help npm fund for details.  <!-- automatically generated, do  not  edit
211       manually --> <!-- see lib/utils/config/definitions.js -->
212
213
214   dry-run
215       • Default: false
216
217       • Type: Boolean
218
219
220       Indicates  that  you  don't  want  npm  to make any changes and that it
221       should only report what it would have done. This can be passed into any
222       of  the  commands that modify your local installation, eg, install, up‐
223       date, dedupe, uninstall, as well as pack and publish.
224
225       Note: This is  NOT  honored  by  other  network  related  commands,  eg
226       dist-tags, owner, etc.  <!-- automatically generated, do not edit manu‐
227       ally --> <!-- see lib/utils/config/definitions.js -->
228
229
230   workspace
231       • Default:
232
233       • Type: String (can be set multiple times)
234
235
236       Enable running a command in the context of the configured workspaces of
237       the  current project while filtering by running only the workspaces de‐
238       fined by this configuration option.
239
240       Valid values for the workspace config are either:
241
242       • Workspace names
243
244       • Path to a workspace directory
245
246       • Path to a parent workspace directory (will result  in  selecting  all
247         workspaces within that folder)
248
249
250       When  set  for the npm init command, this may be set to the folder of a
251       workspace which does not yet exist, to create the folder and set it  up
252       as a brand new workspace within the project.
253
254       This  value  is  not  exported  to the environment for child processes.
255       <!-- automatically  generated,  do  not  edit  manually  -->  <!--  see
256       lib/utils/config/definitions.js -->
257
258
259   workspaces
260       • Default: null
261
262       • Type: null or Boolean
263
264
265       Set  to  true  to  run  the  command  in  the context of all configured
266       workspaces.
267
268       Explicitly setting this to false will cause commands  like  install  to
269       ignore workspaces altogether. When not set explicitly:
270
271       • Commands  that  operate  on  the  node_modules tree (install, update,
272         etc.)  will link workspaces into the node_modules folder. -  Commands
273         that  do other things (test, exec, publish, etc.) will operate on the
274         root project, unless one or more  workspaces  are  specified  in  the
275         workspace config.
276
277
278       This  value  is  not  exported  to the environment for child processes.
279       <!-- automatically  generated,  do  not  edit  manually  -->  <!--  see
280       lib/utils/config/definitions.js -->
281
282
283   include-workspace-root
284       • Default: false
285
286       • Type: Boolean
287
288
289       Include the workspace root when workspaces are enabled for a command.
290
291       When  false, specifying individual workspaces via the workspace config,
292       or all workspaces via the workspaces flag, will cause  npm  to  operate
293       only  on  the  specified workspaces, and not on the root project.  <!--
294       automatically  generated,  do  not   edit   manually   -->   <!--   see
295       lib/utils/config/definitions.js -->
296
297       <!-- AUTOGENERATED CONFIG DESCRIPTIONS END -->
298
299
300   See Also
301       • npm help find-dupes
302
303       • npm help ls
304
305       • npm help update
306
307       • npm help install
308
309
310
311
312                                 January 2022                    NPM-DEDUPE(1)
Impressum