如何通过package-lock.json
跳过从npm ci
安装可选的依赖项?
答案 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
。
但我不确定它是否也会对您有所帮助。