首页 > 解决方案 > 我应该更新我的 npm 版本还是使用 node.js 提供的一个?

问题描述

我有一个使用 node.js 14.16.0 的项目。我和我的团队成员都使用那个版本。我使用 npm 6.14.11 而我的团队成员使用 npm 7.xx 这导致 package-lock.json 不同;该lockFileVersion属性在我的 PC 上为 1,但在他们的 PC 上为 2。

我已经使用nvm并正在考虑添加一个.nvmrc,因此每个人都始终使用相同的节点版本,但这并不能解决 npm 版本问题。

我认为使用已安装的 node.js 版本提供的 npm 版本是一个好主意。如果下一个大型 LTS 版本使用新的 npm 版本,项目将切换到该版本。但在NPM 的网站上,他们说:

npm 是一个独立于 Node.js 的项目,并且倾向于更频繁地更新。因此,即使您刚刚下载了 Node.js(以及 npm),您也可能需要更新您的 npm。幸运的是,npm 知道如何自我更新!

这让我相信我应该经常更新。

但他们也说:

Node.js 有很多版本!要有效地使用 Node.js 和 npm,您需要确保您使用的是 Node.js 团队支持的版本。通常,您应该使用标有“LTS”的 Node.js 版本。

这让我相信我不应该更新而只使用 node.js 提供的一个。

最佳做法是什么?NPM没有LTS的概念吗?

标签: node.jsnpmversioningpackage.json

解决方案


npm 有一个 LTS 的概念。事实上,他们标记了一个版本lts,以便您npm install -g npm@lts可以获得最新的 lts 版本,在撰写本文时它是 7.6.3。

npm 将继续支持任何主要版本的 npm,只要它附带仍然受支持的节点版本。因此,他们将支持 npm@6,直到 14 结束,因为 npm@6 随版本 14 一起提供。

也就是说,npm@7 是 npm 的当前版本,只要支持 14,它也会在 14 上得到支持。

如果有疑问,请使用npm@lts(在撰写本文时是第 7 版)。但是,如果您并不真正关心一种或另一种方式并且不想强迫您的同事更新,npm@6只要支持 Node.js 14,就会继续接收更新。我建议尽管更新npm@6到最新版本。npm install -g npm@6任何一个版本(npm@6npm@7)都应该可以正常工作。你只需要和你的同事选择一个来避免package-lock.json流失(或者不关心锁文件流失)。


推荐阅读