问题
在不真正安装
package-lock.json
的情况下更新/生成 node_modules
的方法是什么(npm install
的作用)?
我只想要一个基于我的
package-lock.json
的有效 package.json
,仅此而已。
动机
当 CI 服务器使用
yarn
时,您可以在本地使用 npm
。这可能不是最佳实践,但作为临时解决方案仍然可以。
额外问题:与
yarn
相同。是否可以在不进行实际安装的情况下生成yarn-lock.json
?
从 npm 6.x 开始,您可以使用以下命令:
npm i --package-lock-only
文档(https://docs.npmjs.com/cli/install.html)说:
参数只会更新--package-lock-only
,而不是检查node_modules并下载依赖项。package-lock.json
从yarn 3.0.0开始,您可以使用以下命令:
yarn install --mode update-lockfile
文档(https://yarnpkg.com/cli/install#options-mode%20%230)说:
如果设置了
选项,Yarn 将更改生成的工件。--mode=<mode>
将完全跳过链接步骤,并且仅获取锁定文件中缺少的包(或没有关联的校验和)。此模式通常由 Renovate 或 Dependabot 等工具使用,以保持锁定文件最新,而无需承担全部安装成本。update-lockfile
截至2019年9月10日:yarn似乎不支持在不安装模块的情况下生成锁定文件。相关 GitHub 问题:https://github.com/yarnpkg/yarn/issues/5738
除了 Teh 的 answer 之外,对于 Yarn 现在您还可以:
yarn install --mode update-lockfile
文档:https://yarnpkg.com/cli/install#options-mode%20%230
将完全跳过链接步骤,并且仅获取锁定文件中缺少的包(或没有关联的校验和)。此模式通常由 Renovate 或 Dependabot 等工具使用,以保持锁定文件最新,而无需承担全部安装成本。update-lockfile
虽然
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