我是 npm 新手,正在尝试了解重新创建 node_modules
部署目录的工作原理。
我们使用 npm ci
而不是 npm install
以确保在部署期间保持干净。但是,当我们在没有任何标志的情况下运行它时,我们会收到以下错误:
修复上游依赖冲突,或使用 –force 或 –legacy-peer-deps 重试此命令以接受不正确(并且可能损坏)的依赖解析。
npm install
for --force
的 文档 如下( npm ci
的 页面 上没有标志):
-f 或 –force 参数将强制 npm 获取远程资源,即使磁盘上存在本地副本。
同时, --legacy-peer-deps
的文档说:
–legacy-peer-deps:安装时忽略所有 peerDependencies,采用 npm 版本 4 到版本 6 的样式。
似乎这两个标志都会让 npm ci
生成 node_modules
目录没有任何问题,但我仍然不清楚两者之间的差异。
据我了解, --force
听起来它将是在最后一个依赖下载的基础上,并将覆盖任何以前下载的依赖项。同时, --legacy-peer-deps
听起来它在安装过程中总是会跳过对等依赖项(无论是什么),即使没有问题。
这两个标志有什么区别,我们应该什么时候使用它们?
原文由 Floating Sunfish 发布,翻译遵循 CC BY-SA 4.0 许可协议
在新版本的 npm (v7) 中,默认情况下,
npm install
在遇到冲突 的 peerDependencies 时会失败。以前不是这样的。在此处 查看有关 npm v7 中对等依赖项的更多信息。
两者的区别如下——
--legacy-peer-deps
:安装时忽略所有 peerDependencies ,采用 npm 版本 4 到版本 6 的样式。--strict-peer-deps
:遇到任何冲突的 peerDependencies 时失败并中止安装过程。默认情况下,npm 只会在根项目的直接依赖引起的 peerDependencies 冲突时崩溃。--force
:即使磁盘上存在本地副本,也会强制 npm 获取远程资源。