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

我不小心删除了它,并对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文件?

298183 次浏览

这个问题在评论中得到了回答;package-lock.jsonnpm v5及更高版本中的一个特性。npm shrinkwrap是在所有版本的npm中创建锁文件的方法。

默认情况下,当你运行npm install时,package-lock.json会被更新。但是,可以通过在~/.npmrc中设置package-lock=false来全局禁用此功能。

当全局package-lock=false设置激活时,您仍然可以通过运行以下命令强制更新项目的package-lock.json文件:

npm install --package-lock

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

在npm 6中。X和7。你可以使用X

npm i --package-lock-only

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

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

正如几个答案所解释的,你应该跑:

npm i

如果它确实解决…

对我来说是3.x。x不使用package-lock.json(根本))

npm -v

它应该是至少5.x.x (介绍了是包锁。json文件。)

要在Linux上更新npm,请遵循这些指令。

有关包文件的更多详细信息,请阅读这一媒介 story。

如果你的npm版本是较低的而不是版本5,那么安装更高的版本以自动生成package-lock.json

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

npm i -g npm@6.14.0

你可以通过查看最新的npm版本列表

npm view npm versions

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

如果你像我一样,你尝试了这里所有的答案,并想知道为什么没有package-lock.json出现在你的Git“已更改的文件”中。在这种情况下,检查以确保过去没有人将package-lock.json添加到.gitignore中!

不是一个直接的答案,但也许它会帮助那些在这个😅上花了太长时间的人