有没有办法强制 npm 生成 package-lock.json?
Is there a way to force npm to generate package-lock.json?
我不小心删除了它,此后对 package.json
做了很多修改。 npm install
或 npm update
不再生成 package-lock.json
。我尝试清除我的 npm 缓存和我的 nvm 缓存,但似乎没有任何效果。我在 Node.js 的几个版本上尝试过它(6.10.3 Node.js - 我希望它在 3.10.10 npm 上工作),但它在任何版本上都不起作用。
有没有办法强制 npm 生成 package-lock.json
文件?
这个在评论里回答了; package-lock.json
是 npm
v5 及更高版本中的一项功能。 npm shrinkwrap
是在 npm
.
的所有版本中创建锁定文件的方式
默认情况下,只要您 运行 npm install
,就会更新 package-lock.json
。但是,可以通过在 ~/.npmrc
.
中设置 package-lock=false
全局禁用此功能
当全局 package-lock=false
设置处于活动状态时,您仍然可以通过 运行ning 强制更新项目的 package-lock.json
文件:
npm install --package-lock
此命令是强制 package-lock.json
更新的唯一可靠方法。
在 npm 6.x 和 7.x 中你可以使用
npm i --package-lock-only
根据 npm v6, npm v7 or latest version 的文档:
The --package-lock-only argument will only update the package-lock.json, instead of checking node_modules and downloading dependencies.
正如几个答案所解释的那样,你应该 运行:
npm i
但是如果不解决...
检查 npm
可执行文件的版本。(对我来说是 3.x.x,它不使用 package-lock.json
(在全部))
npm -v
应该至少5.x.x(introduced包-lock.json文件。)
要在 Linux 上更新 npm
,请按照 these 说明进行操作。
有关包文件的更多详细信息,请阅读this medium故事。
如果您的 npm 版本 比 版本 5 低 然后安装更高版本自动生成 package-lock.json.
示例:将您当前的 npm 升级到版本 6.14.0(示例 - 您可以选择任何其他最新版本)
npm i -g npm@6.14.0
您可以通过
查看最新的npm版本列表
npm view npm versions
使用本地包时,我发现可靠地重新生成 package-lock.json 文件的唯一方法是删除它,以及删除链接模块和所有相应的 node_modules 文件夹和让它用 npm i
重新生成
如果您像我一样,尝试了这里的所有答案,想知道为什么 package-lock.json
没有出现在您的 Git“已更改的文件”中。在这种情况下,请检查以确保过去没有人将 package-lock.json
添加到 .gitignore
!
不是一个真正的直接答案,但也许它会帮助那些在这个问题上花了太多时间的人
我不小心删除了它,此后对 package.json
做了很多修改。 npm install
或 npm update
不再生成 package-lock.json
。我尝试清除我的 npm 缓存和我的 nvm 缓存,但似乎没有任何效果。我在 Node.js 的几个版本上尝试过它(6.10.3 Node.js - 我希望它在 3.10.10 npm 上工作),但它在任何版本上都不起作用。
有没有办法强制 npm 生成 package-lock.json
文件?
这个在评论里回答了; package-lock.json
是 npm
v5 及更高版本中的一项功能。 npm shrinkwrap
是在 npm
.
默认情况下,只要您 运行 npm install
,就会更新 package-lock.json
。但是,可以通过在 ~/.npmrc
.
package-lock=false
全局禁用此功能
当全局 package-lock=false
设置处于活动状态时,您仍然可以通过 运行ning 强制更新项目的 package-lock.json
文件:
npm install --package-lock
此命令是强制 package-lock.json
更新的唯一可靠方法。
在 npm 6.x 和 7.x 中你可以使用
npm i --package-lock-only
根据 npm v6, npm v7 or latest version 的文档:
The --package-lock-only argument will only update the package-lock.json, instead of checking node_modules and downloading dependencies.
正如几个答案所解释的那样,你应该 运行:
npm i
但是如果不解决...
检查 npm
可执行文件的版本。(对我来说是 3.x.x,它不使用 package-lock.json
(在全部))
npm -v
应该至少5.x.x(introduced包-lock.json文件。)
要在 Linux 上更新 npm
,请按照 these 说明进行操作。
有关包文件的更多详细信息,请阅读this medium故事。
如果您的 npm 版本 比 版本 5 低 然后安装更高版本自动生成 package-lock.json.
示例:将您当前的 npm 升级到版本 6.14.0(示例 - 您可以选择任何其他最新版本)
npm i -g npm@6.14.0
您可以通过
查看最新的npm版本列表npm view npm versions
使用本地包时,我发现可靠地重新生成 package-lock.json 文件的唯一方法是删除它,以及删除链接模块和所有相应的 node_modules 文件夹和让它用 npm i
如果您像我一样,尝试了这里的所有答案,想知道为什么 package-lock.json
没有出现在您的 Git“已更改的文件”中。在这种情况下,请检查以确保过去没有人将 package-lock.json
添加到 .gitignore
!
不是一个真正的直接答案,但也许它会帮助那些在这个问题上花了太多时间的人