如何通过';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:)