【问题标题】:npm install not creating a new package-lock.jsonnpm install 没有创建新的 package-lock.json
【发布时间】:2017-08-24 16:15:29
【问题描述】:

我不小心删除了我的 package-lock.json 文件。 npm install 不会生成新的。如何让 npm 重新创建此文件。

【问题讨论】:

  • 你用的是什么节点版本?
  • @emil 它最初创建了一个 package-lock.json 而我也没有 shrinkwrap.json。以前没见过。
  • 另外,npm 仅在修改您的 node_modules 文件夹时创建/更新锁定文件,因此在 theory 中您可以删除您的 node_modules 文件夹,运行 @ 987654324@ 它应该为你重新生成文件
  • @emil 我刚刚升级到 v8.4.0 并运行 npm install 并创建了 package-lock.json
  • 对于遇到此问题的其他人:还要确保 .npmrc 不包含 package-lock=false。这是package-lock.json 可能不存在的另一个原因。

标签: npm npm-install package-lock.json


【解决方案1】:

可能有一个名为.npmrc 的文件可以包含

package-lock=false

这会导致无法生成包锁文件。

理论上您也可以全局开启npm config set package-lock false(更改为true 以再次开启),但这不太可能无意中发生。

【讨论】:

  • 是的,就是这样。感谢您将此添加为正确的答案。
  • 这样做的目的是什么?我正在处理一个需要运行 npm ci 的项目,该项目由于没有包锁定文件而失败 - 那么为什么维护人员会将此设置添加到 npmrc?
  • @Matt 有些人没有看到版本锁定文件的好处,因此讨厌它每次都会生成一个新的锁定文件,从他们的角度“污染”他们的提交。
  • 这个也可以在package.json中指定(不用额外的文件)。我的意思是,它是关于 package.json 的。这是安装节点包的必需文件...
【解决方案2】:

package-lock.json 文件是在 npm v5 中引入的,因此您需要采取的重新生成 package-lock.json 的步骤取决于您使用的 npm 版本。

仅供参考。让我们验证一下 node 和 npm 的版本。

npm -v

打印:x.x.x

node -v

打印:x.x.x

我相信 package-lock.json 是自动生成的,如果这两个条件 满足 npm 版本 > 5.x.x 和节点版本 > 7.x.x

然后,根据您拥有的版本尝试以下步骤:

npm v5+:

通过运行 npm install 重新生成 package-lock.json。您也可以使用npm install --package-lock-only 重新生成文件而不实际下载依赖项

npm v4.x 及更早版本:

  1. 通过运行npm shrinkwrap 生成一个 npm-shrinkwrap.json。此文件与 package-lock.json 具有相同的格式,并且在早期版本的 npm 中实现了基本相同的目的(有关此点的详细信息,请参阅 https://docs.npmjs.com/files/package-lock.jsonhttps://docs.npmjs.com/files/shrinkwrap.json
  2. 将 npm-shrinkwrap.json 重命名为 package-lock.json

【讨论】:

  • 节点 8.9.1 和 npm 6.4.0。此处未在npm install 上生成 package-lock.json。
  • 啊,刚刚从上面的cmets那里得知.npmrc可以有package-lock=false,我们的项目正好有。
【解决方案3】:

为了解决这个问题,我尝试了下面提到的事情,它对我有用:

确保您的包锁已全局启用,您可以使用以下方式启用它:

npm config set package-lock true

要确保您的 .npmrc 不会阻止创建包锁定文件,请将其设置为您的 .npmrc

echo 'package-lock=true' >> .npmrc

注意:对于 npm 修改 node_modules 树或 npm -v > 5.x.x 的 package.json 的任何操作,都会自动生成 package-lock.json。

检查你的 npm 版本:npm -v

使用以下命令将您的 npm 更新到最新版本:

npm install -g npm@latest

npm i -g npm-upgrade

@将

【讨论】:

    【解决方案4】:

    我也遇到了同样的问题

    我刚刚从 .npmrc 中删除了 package-lock=false,现在它正在创建锁定文件

    【讨论】:

    • 这似乎与@DavidMulder 的回答重复
    【解决方案5】:

    如果您的 npm 版本为 shrinkwrap.json 文件

    否则package-lock 将在 npm 版本 5 及更高版本上创建。

    【讨论】:

    • 在为我运行npm i 后它什么也没产生。使用节点 6.12.2 npm 3.10.10
    猜你喜欢
    • 1970-01-01
    • 2020-05-20
    • 2022-01-02
    • 2017-12-14
    • 1970-01-01
    • 2018-09-04
    • 2020-03-05
    • 2021-05-13
    • 2022-11-24
    相关资源
    最近更新 更多