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

Big*_*ney 87 node.js npm package-lock.json

我意外删除了它,并且package.json从那以后做了很多改动.是npm installnpm update不再生成package-lock.json.我尝试清除我的npm缓存和我的nvm缓存,但似乎没有任何工作.我尝试了几个版本的节点(6.10.3节点 - 3.10.10 npm是我希望它的工作),它不适用于任何版本.

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

Mat*_*ens 93

默认情况下,package-lock.json每次运行时都会更新npm install.然而,这可以通过全局设置禁用package-lock=false~/.npmrc.

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

npm install --package-lock
Run Code Online (Sandbox Code Playgroud)

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

  • npm v 6.4.1,这不会创建package-lock.json (6认同)
  • 如果您将npm v3用于您的项目,则不会有“ package-lock.json”。仅npm v5 +支持`package-lock.json`。 (2认同)
  • 该答案正在[在Meta上讨论](https://meta.stackoverflow.com/q/382498/7795130)。 (2认同)

小智 47

在npm 6.x中,您可以使用

npm i --package-lock-only
Run Code Online (Sandbox Code Playgroud)

根据https://docs.npmjs.com/cli/install.html

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

  • 现在,这是正确的答案,其他人已经过时,无法正常工作。 (6认同)
  • 请确保您运行答案中列出的命令,而不是不带两个破折号的“npm i package-lock-only”,否则您将安装名为“package-lock-only”的软件包。你猜我是怎么发现的? (6认同)

LJH*_*arb 12

这在评论中得到了回答; package-lock.jsonnpmv5及更高版本中的一项功能.npm shrinkwrap是如何在所有版本的中创建锁文件的npm.

  • 在npm 5+中,它们实际上完全相同,直到每个细节,除了一件事:`npm-shrinkwrap.json`将发布到注册表,而`package-lock.json`则不会. (6认同)
  • 是的.这是一个非常重要的区别,这就是我发表评论的原因. (6认同)
  • 它在npm 5+中是自动的,或者你可以使用`--package-lock`强制它在5+以上 (5认同)
  • `npm shrinkwrap` 生成 `npm-shrinkwrap.json`,但是你如何生成 `package-lock.json` 呢? (2认同)