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

Ser*_*lov 55 frontend node.js npm node-modules yarnpkg

这是一种package-lock.json无需真正安装node_modules(如npm i)即可更新/生成的方法吗?我只需要一个package-lock.json基于我的有效package.json,就是这样。

动机

您(或您的同事)可能会使用yarn本地,当CI服务器使用npm。这可能不是最佳实践,但仍可能出于某些原因。

在一个完美的世界中,我想要一个命令来更新 package-lock.json

额外问题:对于yarn. 有没有办法在yarn-lock.json没有模块安装的情况下生成(yarn install)?

Teh*_*Teh 98

新产品经理

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

npm i --package-lock-only
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 必须先删除锁定文件。有没有一个命令解决方案而无需先删除锁定文件? (5认同)

小智 6

我没有足够的声誉来发表评论,所以只需添加一个答案:)

除了Teh回答之外,对于 Yarn 现在您还可以:

yarn install --mode update-lockfile
Run Code Online (Sandbox Code Playgroud)

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

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