我应该更新我的 npm 版本还是使用 node.js 提供的版本?

Should I update my npm version or use the one node.js provides?

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

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

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

npm is a separate project from Node.js, and tends to update more frequently. As a result, even if you’ve just downloaded Node.js (and therefore npm), you’ll probably need to update your npm. Luckily, npm knows how to update itself!

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

但他们也说:

Node.js has lots of versions! To use Node.js, and therefore npm, effectively, you’ll want to make sure that you are on a version that is supported by the Node.js team. In general, you should use the version of Node.js labelled “LTS”.

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

最佳做法是什么?

npm 有一个 LTS 的概念。他们过去常常标记一个版本 lts,这样你就可以 npm install -g npm@lts 并获得最新的 lts 版本,但是,唉,没有更多了。

npm 将继续支持任何主要版本的 npm,只要它附带仍然受支持的节点版本。所以他们将支持 npm@6 直到 14 停产,因为 npm@6 附带版本 14。

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

如果您不想强迫您的同事更新,只要支持 Node.js 14,npm@6 将继续接收更新。不过,我建议使用 npm install -g npm@6 更新到最新的 npm@6。任何一个版本(npm@6npm@7)都应该可以正常工作。你只需要和你的同事一起选择一个来避免 package-lock.json 流失(或者不关心锁文件流失)。