目录
npm-dedupe
选择 CLI 版本
目录
概要
npm dedupealias: ddp
描述
搜索本地包树并尝试通过将依赖项向上移动到树中以简化整体结构,在那里它们可以更有效地被多个依赖项包共享。
例如,考虑以下依赖项图
a`-- d <-- depends on c@~1.0.9
在这种情况下,npm dedupe
将把树转换为
a+-- b+-- d
由于节点模块查找的层次结构,b 和 d 都将通过树根级别的单个 c 包来满足其依赖项。
在某些情况下,您可能会有一个像这样的依赖项图
a
在安装过程中,b
的 [email protected]
依赖项被放置在树的根部。尽管 d
对 [email protected]
的依赖项可以由 [email protected]
满足,但使用了更新的 [email protected]
依赖项,因为 npm 默认情况下优先考虑更新,即使这样做会导致重复。
运行 npm dedupe
将导致 npm 发现重复并重新评估,删除嵌套的 c
模块,因为根部的模块就足够了。
要在安装过程中优先考虑去重而不是新颖性,请运行 npm install --prefer-dedupe
或 npm config set prefer-dedupe true
。
参数被忽略。Dedupe 始终作用于整个树。
请注意,此操作会转换依赖项树,但绝不会导致安装新模块。
使用 npm find-dupes
将以 --dry-run
模式运行命令。
注意:npm dedupe
绝不会更新项目 package.json
中直接依赖项的 semver 值,如果要更新 package.json
中的值,可以运行:npm update --save
。
配置
install-strategy
- 默认: "hoisted"
- 类型:"hoisted"、"nested"、"shallow" 或 "linked"
设置在 node_modules 中安装包的策略。hoisted (默认):在顶层安装非重复项,并在目录结构中根据需要安装重复项。nested: (以前是 --legacy-bundling) 就地安装,不提升。shallow (以前是 --global-style) 只在顶层安装直接依赖项。linked: (实验性) 安装在 node_modules/.store 中,就地链接,不提升。
legacy-bundling
- 默认:false
- 类型:布尔值
- 已弃用:此选项已弃用,取而代之的是
--install-strategy=nested
不要在 node_modules
中提升包安装,而是以与依赖它们相同的方式安装包。这可能会导致非常深的目录结构和重复的包安装,因为没有去重。设置 --install-strategy=nested
。
global-style
- 默认:false
- 类型:布尔值
- 已弃用:此选项已弃用,取而代之的是
--install-strategy=shallow
只在顶层 node_modules
中安装直接依赖项,但在更深层次的依赖项上提升。设置 --install-strategy=shallow
。
strict-peer-deps
- 默认:false
- 类型:布尔值
如果设置为 true
,并且 --legacy-peer-deps
未设置,则任何冲突的 peerDependencies
将被视为安装失败,即使 npm 可以根据非对等依赖关系合理地推测适当的解决方案。
默认情况下,依赖关系图中深处的冲突 peerDependencies
将使用最接近的非对等依赖项规范来解决,即使这样做会导致某些包收到其包的 peerDependencies
对象中未设置的范围之外的对等依赖项。
当执行此类覆盖时,会打印一条警告,说明冲突和涉及的包。如果设置了 --strict-peer-deps
,则此警告将被视为失败。
package-lock
- 默认:true
- 类型:布尔值
如果设置为 false,则在安装时忽略 package-lock.json
文件。如果 save
为 true,这也会阻止写入 package-lock.json
。
omit
- 默认:如果
NODE_ENV
环境变量设置为 "production",则为 "dev",否则为空。 - 类型:"dev"、"optional" 或 "peer" (可以设置多次)
从磁盘上的安装树中省略的依赖项类型。
请注意,这些依赖项仍然被解析并添加到 package-lock.json
或 npm-shrinkwrap.json
文件中。它们只是没有物理地安装在磁盘上。
如果包类型同时出现在 --include
和 --omit
列表中,则它将被包含在内。
如果生成的省略列表包含 'dev'
,则 NODE_ENV
环境变量将被设置为 'production'
用于所有生命周期脚本。
include
- 默认
- 类型:"prod","dev","optional" 或 "peer"(可以设置多次)
允许定义要安装的依赖项类型的选项。
这是 --omit=<type>
的反面。
在 --include
中指定的依赖项类型不会被省略,无论在命令行中省略/包含的顺序如何。
ignore-scripts
- 默认:false
- 类型:布尔值
如果为 true,npm 不会运行 package.json 文件中指定的脚本。
请注意,明确用于运行特定脚本的命令,例如 npm start
、npm stop
、npm restart
、npm test
和 npm run-script
,如果 ignore-scripts
设置,它们仍然会运行其目标脚本,但它们不会运行任何预先或事后脚本。
audit
- 默认:true
- 类型:布尔值
当为 "true" 时,会将审核报告连同当前 npm 命令一起提交到默认注册表以及为作用域配置的所有注册表。有关提交内容的详细信息,请参阅 npm audit
文档。
bin-links
- 默认:true
- 类型:布尔值
告诉 npm 为包可执行文件创建符号链接(或 Windows 上的 .cmd
shim)。
设置为 false 以使其不执行此操作。这可以用来解决某些文件系统不支持符号链接的问题,即使在表面上是 Unix 系统上也是如此。
fund
- 默认:true
- 类型:布尔值
当为 "true" 时,会在每次 npm install
结束时显示消息,确认正在寻找资金的依赖项数量。有关详细信息,请参阅 npm fund
。
dry-run
- 默认:false
- 类型:布尔值
表示您不希望 npm 进行任何更改,并且它应该只报告它将执行的操作。这可以传递给任何修改本地安装的命令,例如 install
、update
、dedupe
、uninstall
,以及 pack
和 publish
。
注意:这不会被其他与网络相关的命令(例如 dist-tags
、owner
等)所遵循。
workspace
- 默认
- 类型:字符串(可以设置多次)
启用在当前项目的配置工作空间的上下文中运行命令,同时通过仅运行此配置选项定义的工作空间来进行过滤。
workspace
配置的有效值为:
- 工作空间名称
- 工作空间目录的路径
- 父工作空间目录的路径(将导致选择该文件夹中的所有工作空间)
当为 npm init
命令设置时,这可以设置为尚未存在的工作空间的文件夹,以创建文件夹并将其设置为项目中全新的工作空间。
此值不会导出到子进程的环境中。
workspaces
- 默认:null
- 类型:null 或布尔值
设置为 true 以在所有配置的工作空间的上下文中运行命令。
将此显式设置为 false 会导致像 install
这样的命令完全忽略工作空间。当未显式设置时
- 对
node_modules
树进行操作的命令(install、update 等)将把工作空间链接到node_modules
文件夹中。 - 执行其他操作的命令(test、exec、publish 等)将在根项目上执行,除非workspace
配置中指定了一个或多个工作空间。
此值不会导出到子进程的环境中。
include-workspace-root
- 默认:false
- 类型:布尔值
在为命令启用工作空间时包含工作空间根目录。
当为 false 时,通过 workspace
配置指定单个工作空间,或通过 workspaces
标志指定所有工作空间,会导致 npm 仅在指定的工作空间上操作,而不是在根项目上操作。
此值不会导出到子进程的环境中。
install-links
- 默认:false
- 类型:布尔值
当设置时,file: 协议依赖项将被打包并安装为常规依赖项,而不是创建符号链接。此选项对工作空间没有影响。