如何跳过“ npm ci”安装可选依赖项?

时间:2018-12-29 12:03:56

标签: npm npm-install npm-ci

如何通过package-lock.json跳过从npm ci安装可选的依赖项?

3 个答案:

答案 0 :(得分:2)

您可以使用npm install --no-optional。 如果npm仍安装可选软件包。然后在删除package.lock.json之后尝试并再次运行命令。

答案 1 :(得分:1)

有点晚,但是您可以使用npm ci --no-optional。我测试了请确保您的npm版本至少为6.13.4(也许较早的版本可以工作,但我无法确认)。

答案 2 :(得分:0)

这不是一个合适的解决方案,而是一个丑陋的解决方案,但它帮助了我。看起来 npm ci --no-optional 不起作用并且可能从未起作用。但同时标志 --production 有效。如果我们负担得起变异 package.json(例如在 docker 容器中),那么...

所以我写了一个简单的脚本:

  • 阅读 package.json 内容
  • Object.assign(cfg.dependencies, cfg.devDependencies)
  • delete cfg.devDependencies
  • 覆盖初始的 package.json

所以最后我们有:

  • dependencies 包含普通和开发依赖项
  • devDependencies 部分为空
  • optionalDependencies 完好无损

当我们运行 npm ci --production 时,我们得到了我们想要的东西——没有可选的依赖项(在我的例子中是 cypress)。由于所有这些步骤都是在 docker 容器内执行的,我们可以改变 package.json

但我不确定它是否也会对您有所帮助。