如何跳过安装可选依赖package-lock.json
项npm ci
?
问问题
13725 次
4 回答
11
您可以使用 npm ci --no-optional 。如果 npm 仍然安装可选包。然后在删除 package.lock.json 后尝试并再次运行该命令。
于 2018-12-29T12:34:49.807 回答
4
NPM 的npm ci --no-optional
. 它已在 > 6.13.3 的版本中得到修复——也许更早的版本也是如此,但我只能保证 6.13.4 及更高版本。
于 2020-01-28T20:06:05.967 回答
1
我在 CI 工作流脚本中遇到了这个问题,甚至“--no-optional” 都不起作用
npm ci --no-optional
仅当我将可选包添加为时,上述命令才有效
"optionalDependencies": {
"fsevents": "^2.3.2"
}
在 package.json 文件中
于 2021-08-15T01:34:20.800 回答
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 容器内执行的,我们可以 mutate package.json
。
但我不确定它是否也会帮助你。
于 2021-03-17T16:32:55.553 回答