如何在不执行 npm install 的情况下更新 package-lock.json?

问题描述 投票:0回答:3

问题

在不真正安装

package-lock.json
的情况下更新/生成
node_modules
的方法是什么(
npm install
的作用)?

我只想要一个基于我的

package-lock.json
的有效
package.json
,仅此而已。

动机

当 CI 服务器使用

yarn
时,您可以在本地使用
npm
。这可能不是最佳实践,但作为临时解决方案仍然可以。

额外问题:与

yarn
相同。是否可以在不进行实际安装的情况下生成
yarn-lock.json

npm yarnpkg
3个回答
259
投票

npm

从 npm 6.x 开始,您可以使用以下命令:

npm i --package-lock-only

文档(https://docs.npmjs.com/cli/install.html)说:

--package-lock-only
参数只会更新
package-lock.json
,而不是检查node_modules并下载依赖项。

纱线

从yarn 3.0.0开始,您可以使用以下命令:

yarn install --mode update-lockfile

文档(https://yarnpkg.com/cli/install#options-mode%20%230)说:

如果设置了

--mode=<mode>
选项,Yarn 将更改生成的工件。

update-lockfile
将完全跳过链接步骤,并且仅获取锁定文件中缺少的包(或没有关联的校验和)。此模式通常由 Renovate 或 Dependabot 等工具使用,以保持锁定文件最新,而无需承担全部安装成本。

截至2019年9月10日:yarn似乎不支持在不安装模块的情况下生成锁定文件。相关 GitHub 问题:https://github.com/yarnpkg/yarn/issues/5738


7
投票

除了 Tehanswer 之外,对于 Yarn 现在您还可以:

yarn install --mode update-lockfile

文档:https://yarnpkg.com/cli/install#options-mode%20%230

update-lockfile
将完全跳过链接步骤,并且仅获取锁定文件中缺少的包(或没有关联的校验和)。此模式通常由 Renovate 或 Dependabot 等工具使用,以保持锁定文件最新,而无需承担全部安装成本。


3
投票

虽然

npm install --package-lock-only
(如@Teh回答)将创建一个
package-lock.json
文件,而不下载并安装
node_modules
目录中的所有依赖项,但如果
package-lock.json
文件已存在,则不会更新依赖项版本在运行之前。

但是,

npm update --package-lock-only
会在不存在时生成一个新的
package-lock.json
文件,并在通过一些记录不足的
npm update
行为更新现有文件(当前的 npm update 文档中没有记录,但在 中提到) npm 配置文档 代替):

package-lock-only

  • 默认:假
  • 类型:布尔值

如果设置为true,当前操作将只使用

package-lock.json
,忽略
node_modules

对于

update
这意味着只有
package-lock.json
会被更新, 而不是检查
node_modules
并下载依赖项。

© www.soinside.com 2019 - 2024. All rights reserved.