为啥“npm install”不重写 package-lock.json?如果不存在也不生成新的?

Posted

技术标签:

【中文标题】为啥“npm install”不重写 package-lock.json?如果不存在也不生成新的?【英文标题】:Why does not “npm install” rewrite package-lock.json? And also not generate new one if not exist?为什么“npm install”不重写 package-lock.json?如果不存在也不生成新的? 【发布时间】:2017-12-31 14:53:51 【问题描述】:

我希望在 package.json 中添加新的依赖项并运行 npm install 后,我的 package-lock.json 文件会发生变化——但 package-lock.json 并没有改变。 设置: 节点版本 6.11.0 npm 版本 3.10.10 在运行 npm install 后,我尝试删除旧的 package-lock.json - 没有生成新文件。 谁能告诉我如何更新 package-lock.json? 编辑: 有时我和我的同事有不同的 npm 版本,所以我在代码库中有 package-lock.json,但无法更新它,因为我当前的 npm 版本不支持此功能。更新后一切正常。

【问题讨论】:

【参考方案1】:

package-lock.json 在 npm v5 中引入。 您的 npm v3.10.10 版本没有使用它,您可能需要更新它

【讨论】:

【参考方案2】:

有时我和我的同事有不同的 npm 版本,所以我在代码库中有 package-lock.json,但无法更新它,因为我当前的 npm 版本不支持此功能。更新后一切正常。

【讨论】:

【参考方案3】:

为什么“npm install”不重写 package-lock.json?

因为package-lock.json 的目的是告诉npm 确切地安装哪些模块(如果存在)。如果不存在,npm 会将其写入“缓存”依赖树以供后续安装。

只需rm package-lock.json 并再次安装以更新package-lock.json

如果不存在也不生成新的?

如果您没有生成任何package-lock.json,则很可能是旧版本的npm 不支持它,您已将npm 配置为不生成它(这是可能的)。

【讨论】:

删除旧的锁定文件没有帮助。我可以问一下如何配置 npm 来生成这样的文件吗? “npm set package-lock true”没有帮助。 添加了一个答案,因为你的没有提供具体的解决方案 + 具有误导性(它不是“最有可能”是旧版本或错误配置,而是旧版本)。

以上是关于为啥“npm install”不重写 package-lock.json?如果不存在也不生成新的?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 `npm install` 会为同一个 `package.json` 文件生成不同的 `package-lock.json` 文件?

为啥在 `npm install` 时`package-lock.json` 会导致 docker 容器构建失败?

为啥“npm install”会修改 package-lock.json?那为啥要把它提交给git呢?

为啥“npm install”在我的“package-lock.json”文件中为我的包添加“node_modules”前缀?

为啥 yarn install checkout github 存储库依赖项但 npm install 没有?

为啥在 npm install 之后 npm 正在运行准备脚本,我该如何停止它?