我不小心删除了它,并对包装做了很多更改。json。npm安装或npm更新不会生成包锁。json。我尝试清除我的npm缓存和我的nvm缓存,但似乎没有工作。我在几个版本的Node.js上尝试了它(6.10.3 Node.js - 3.10.10 npm是我想让它工作的),它在任何版本上都不能工作。

有没有办法强制npm生成包锁。json文件吗?


这个问题在评论中得到了回答;package-lock。Json是NPM v5及更高版本的特性。在NPM的所有版本中,你都可以使用shrinkwrap来创建一个锁文件。


默认为package-lock。每当你运行NPM install时,Json都会被更新。但是,可以通过在~/.npmrc中设置package-lock=false全局禁用此功能。

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

npm install --package-lock

这个命令是强制包锁定的唯一可靠方法。json更新。


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

npm i --package-lock-only

根据npm v6, npm v7或最新版本的文档:

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


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

Npm 和

但如果它不能解决……

检查你的npm可执行文件的版本。(对我来说是3.x。X不使用包锁。Json(所有))

npm - v

它至少应该是5.x。X(引入包锁。json文件。)

要在Linux上更新npm,请遵循以下说明。

有关包文件的更多详细信息,请阅读这篇媒体报道。


如果你的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