我无意中删除了它,此后对 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
从 v5 开始在 npm 中默认自动生成,在以前的版本中,锁定文件名为 npm-shrinkwrap.json
,它是使用 npm shrinkwrap
命令手动生成的。
node 8.6.0
并使用它 npm 5.3.0
并且它工作。
.gitignore
。不知何故,我不小心在 .gitignore
中出现了 package-lock.json
,因为 package-lock.json
没有出现在 git status
中,这让我很反感。
在 npm 6.x 和 7.x 中,您可以使用
npm i --package-lock-only
根据 npm v6、npm v7 或 latest version 的文档:
--package-lock-only 参数只会更新 package-lock.json,而不是检查 node_modules 和下载依赖项。
默认情况下,每次运行 npm install
时都会更新 package-lock.json
。但是,可以通过在 ~/.npmrc
中设置 package-lock=false
来全局禁用此功能。
当全局 package-lock=false
设置处于活动状态时,您仍然可以通过运行以下命令强制更新项目的 package-lock.json
文件:
npm install --package-lock
此命令是强制进行 package-lock.json
更新的唯一可靠方法。
package-lock.json
。 package-lock.json
仅受 npm v5+ 支持。
这在评论中得到了回答; package-lock.json
是 npm
v5 及更高版本中的一项功能。 npm shrinkwrap
是您在 npm
的所有版本中创建锁定文件的方式。
package-lock.json
与收缩包装文件并不完全相同。
npm-shrinkwrap.json
将发布到注册表,而 package-lock.json
不会。
npm shrinkwrap
生成 npm-shrinkwrap.json
,但是如何生成 package-lock.json
?
--package-lock
在 5+ 中强制它
正如几个答案所解释的,您应该运行:
npm i
但是如果不解决...
检查您的 npm
可执行文件的版本。(对我来说,它是 3.xx,它不使用 package-lock.json
(根本))
npm -v
它应该是至少 5.xx(其中 introduced package-lock.json 文件。)
要在 Linux 上更新 npm
,请按照 these 说明进行操作。
有关包文件的更多详细信息,请阅读this medium故事。
如果您像我一样,在这里尝试了所有答案,并想知道为什么没有 package-lock.json
出现在您的 Git“已更改文件”中。在这种情况下,请检查以确保过去没有人将 package-lock.json
添加到 .gitignore
!
不是一个直接的答案,但也许它会帮助那些在这方面花费太长时间的人😅
使用本地包时,我发现可靠地重新生成 package-lock.json 文件的唯一方法是删除它,以及在链接的模块和所有相应的 node_modules 文件夹中,然后使用 npm i
重新生成它
如果您的 npm 版本低于版本 5,则安装更高版本以自动生成 package-lock.json。
示例:将您当前的 npm 升级到 6.14.0 版本(示例 - 您可以选择任何其他最新版本)
npm i -g npm@6.14.0
您可以通过以下方式查看最新的 npm 版本列表
npm view npm versions
不定期副业成功案例分享
npm i --package-lock-only --only=production
似乎不起作用。package-lock.json
。但如果您运行npm i --only=production
,它应该只安装生产依赖项。因此,您的构建过程可能如下所示:安装所有依赖项、构建应用程序、删除node_modules
并仅安装生产依赖项。