286

我无意中删除了它,并对其进行了许多更改package.json。一个npm installnpm update不再生成package-lock.json。我尝试清除我的 npm 缓存和我的 nvm 缓存,但似乎没有任何效果。我在几个版本的 Node.js 上尝试过(6.10.3 Node.js - 3.10.10 npm 是我想要的),但它在任何版本上都不起作用。

有没有办法强制 npm 生成package-lock.json文件?

4

6 回答 6

381

在 npm 6.x 和 7.x 中,您可以使用

npm i --package-lock-only

根据npm v6npm v7最新版本的文档:

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

于 2019-02-27T16:24:16.583 回答
217

默认情况下,package-lock.json每次运行时都会更新npm install. 但是,这可以通过设置全局禁用package-lock=false~/.npmrc

当全局package-lock=false设置处于活动状态时,您仍然package-lock.json可以通过运行来强制更新项目的文件:

npm install --package-lock

此命令是强制package-lock.json更新的唯一可靠方法。

于 2018-05-13T06:06:05.770 回答
16

这在评论中得到了回答;package-lock.jsonnpmv5 及更高版本中的一个功能。npm shrinkwrap是如何在所有版本的npm.

于 2017-12-16T20:50:06.333 回答
2

正如几个答案所解释的,您应该运行:

npm i

但是如果解决...

检查npm可执行文件的版本。(对我来说,它是 3.xx,它不使用package-lock.json(根本))

npm -v

它至少应该是5.xx (它引入了 package-lock.json 文件。)

npm在 Linux 上更新,请按照这些说明进行操作。

有关包文件的更多详细信息,请阅读此媒体故事。

于 2019-08-26T14:43:06.283 回答
-1

使用本地包时,我发现可靠地重新生成 package-lock.json 文件的唯一方法是删除它,以及链接的模块和所有相应的 node_modules 文件夹,并让它重新生成npm i

于 2021-01-28T16:34:52.050 回答
-2

如果您的npm版本低于版本 5,则安装更高版本以自动生成package-lock.json

示例:将您当前的npm升级到 6.14.0 版本(示例 - 您可以选择任何其他最新版本)

npm i -g npm@6.14.0

您可以通过以下方式查看最新的npm版本列表

npm view npm versions
于 2020-05-06T05:38:07.917 回答