如何通过';npm ci';?

如何通过';npm ci';?,npm,npm-install,npm-ci,Npm,Npm Install,Npm Ci,如何通过npm-ci跳过从package-lock.json安装可选依赖项?您可以使用npm-ci——无可选依赖项。 如果npm仍然安装可选软件包。然后在删除package.lock.json后重试并再次运行该命令。有点晚,但您可以使用npm ci——无可选的。我测试过了。让舒尔成为您的npm版本至少为6.13.4(可能早期版本可以使用,但我无法确认) 这不是一个合适的解决方案,而是一个丑陋的解决方案,但它帮助了我。它看起来像是npmci——没有可选的不起作用,而且可能从未起作用。但与此同时,f

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

您可以使用npm-ci——无可选依赖项。
如果npm仍然安装可选软件包。然后在删除package.lock.json后重试并再次运行该命令。

有点晚,但您可以使用
npm ci——无可选的
。我测试过了。让舒尔成为您的npm版本至少为6.13.4(可能早期版本可以使用,但我无法确认)

这不是一个合适的解决方案,而是一个丑陋的解决方案,但它帮助了我。它看起来像是
npmci——没有可选的
不起作用,而且可能从未起作用。但与此同时,flag
——生产
起作用。如果我们能提供变异
package.json
(例如在docker容器中),那么

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

  • 读取
    package.json
    content
  • Object.assign(cfg.dependencies,cfg.devDependencies)
  • 删除cfg.devdependency
  • 覆盖初始的
    package.json
因此,最后我们有:

  • 依赖项
    包含普通依赖项和开发依赖项
  • devDependencies
    节为空
  • optionalDependencies
    是完整的
当我们运行
npmci--production
时,我们得到了我们想要的东西--没有可选的依赖项(在我的例子中是
cypress
)。由于所有这些步骤都是在docker容器中执行的,因此我们可以对
package.json
进行变异


但是我不确定它是否也能帮到你。

我需要使用
npm ci
来代替
npm install
,并且不应该删除
package lock.json
。是的,我知道npm安装——没有可选的,但这不是我的情况,确认永远不会太迟。CI使用的是npm 6.11.3,并且没有任何可选项不受尊重。升级到6.13.4,现在是。干杯all@MaximeGélina使用npm ci的全部目的是按照写入package-lock.json的内容加载包。至少那是有文件记录的很抱歉那不是solution@faiwer需要明确的是,它应该在不删除
包json.lock
的情况下工作,但如果不删除,则只删除一次,重新生成它并重试。另外,在没有依赖包的项目中测试它(例如,
ms
uuid
),您将看到它是有效的。有时可选的依赖项是另一个包的嵌套依赖项。@faiwer No,
npm i
应该这样做。请提供针对
npm ci
而非
npm install的解决方案您好,很抱歉打扰您,但您最终找到了解决方案吗?当然除了这些“删除锁定文件,lol:)