我不小心删除了它,并对package.json做了许多更改。npm install或npm update不再生成package-lock.json。我尝试清除我的npm缓存和我的nvm缓存,但似乎没有工作。我在几个版本的Node.js上尝试了它(6.10.3 Node.js - 3.10.10 npm是我想让它工作的),它在任何版本上都不能工作。
package.json
npm install
npm update
package-lock.json
有没有办法强制npm生成package-lock.json文件?
这个问题在评论中得到了回答;package-lock.json是npm v5及更高版本中的一个特性。npm shrinkwrap是在所有版本的npm中创建锁文件的方法。
npm
npm shrinkwrap
默认情况下,当你运行npm install时,package-lock.json会被更新。但是,可以通过在~/.npmrc中设置package-lock=false来全局禁用此功能。
~/.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 v6, npm 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中!
.gitignore
不是一个直接的答案,但也许它会帮助那些在这个😅上花了太长时间的人