nvm / node / npm:使用Node 12比使用Node 14更新的npm?

3

我正在使用 nvm 构建需要特定(不同)Node版本的库。

当我执行:
nvm use 12
我会得到:

现在使用 node v12.21.0 (npm v8.14.0)

但是当我执行:
nvm use 14
我会得到:

现在使用 node v14.18.1 (npm v6.14.15)

看到一个更老的 npm 版本与更新的 Node 版本一起使用,让我非常惊讶。这是应该的方式吗?

当我执行nvm use 14时,我希望它使用最新的 Node 14.x 版本以及该版本可用的最新 npm 版本。或者我对它的工作方式有误解吗?

1个回答

5
Node.js附带了一个版本的npm,但是npm仍然是一个可升级的独立包。
可以从Node发布信息中获取分布版本。
node      npm
v12.22.12 6.14.16
v14.20.0  6.14.17
v16.17.0  8.15.0
v18.9.0   8.19.1

npm 能够在发现旧版本时提示您进行升级,而且您也会在一些场景中经常看到此类指令:

npm install -g npm

这将获取最新版本的npm,这很可能是在nvm 12环境中发生的情况。

有时候升级到新的主要版本npm可能会给已经使用先前主要npm版本设置好的项目带来麻烦以及一些行为方面的变化。CI任务通常会使用npm install -g npm,但某一天它们开始出现故障,而看上去没有任何变化。我也曾遇到过npm停止支持旧版本的node,因此npm install -g npm最终导致npm崩溃。

如果你想保留固定的主要版本(例如v6),如Node 12发布的那样,请使用:

npm install -g npm@^6

或者使用特定版本

npm install -g npm@6.14.16

谢谢。那么,我在使用 nvm use 12 时,在我的 Node 12 环境中安装了 npm v8.14.0,这意味着我可能在过去升级到了最新的 npm 版本(在 12 环境中)?为了避免问题,最好在 Node 12 中执行 npm install -g npm@^6。同样地,在其他 Node 版本中安装最新的 npm 发行版,选择与该 Node 版本最初提供的相同主要 npm 版本,例如 Node 14 的 npm@^6,Node 16 的 npm@^8 等等。我的理解正确吗? - RocketNuts
是的,很可能是在之前升级了最新的npm版本(当时在12环境中)? - Matt
1
为了避免问题,我最好怎么做? npm v8 可以在 Node 12 中运行得很好。 - Matt
1
我想要强调的问题是,npm install -g npm 可能会影响已经使用早期版本 npm 安装的项目。此外,npm 在某个时候将停止支持 Node 12,而 npm install -g npm 可能会给您提供一个不受支持的 npm 版本。但这两个问题都不应该阻止您使用 node12/npm8。 - Matt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接