npm:何时使用 \`--force\` 和 \`--legacy-peer-deps\`

新手上路,请多包涵

我是 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 许可协议

阅读 6.1k
1 个回答

在新版本的 npm (v7) 中,默认情况下, npm install 在遇到冲突 的 peerDependencies 时会失败。以前不是这样的。

在此处 查看有关 npm v7 中对等依赖项的更多信息。

两者的区别如下——

  • --legacy-peer-deps :安装时忽略所有 peerDependencies ,采用 npm 版本 4 到版本 6 的样式。

  • --strict-peer-deps :遇到任何冲突的 peerDependencies 时失败并中止安装过程。默认情况下,npm 只会在根项目的直接依赖引起的 peerDependencies 冲突时崩溃。

  • --force :即使磁盘上存在本地副本,也会强制 npm 获取远程资源。

原文由 Eduardo Almeida 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题