nvm / node / npm:节点 12 的 npm 比节点 14 的 npm 更新?

Roc*_*uts 3 version node.js npm node-modules nvm

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

当我这样做时:
nvm use 12
我得到:

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

但是当我这样做时:
nvm use 14
我得到:

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

我很惊讶地看到旧的npm 版本和新的npm 版本Node 版本。事情就应该这样吗?

当我这样做时,nvm use 14我希望它使用最新的 Node 14.x 以及该 Node 版本可用的任何最新 npm 版本。或者我误解了这是如何工作的?

Mat*_*att 5

Node.js 随 版本一起分发npm,但是npm仍然是一个可以升级的单独包。

可以从节点发布信息中检索分布式版本

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
Run Code Online (Sandbox Code Playgroud)

npm当它检测到旧版本时会提示您升级,并且您还会在野外经常遇到此指令:

npm install -g npm
Run Code Online (Sandbox Code Playgroud)

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

有时,对于已经使用以前的主要版本和一些行为更改进行设置的项目来说,迁移到新的主要版本npm可能会带来麻烦。npmCI 任务通常会有npm install -g npm那么一天,他们会因为看似没有变化的事情而失败。我还看到 npm 放弃了对旧版本 Node 的支持,因此npm install -g npm最终导致 npm 损坏。

如果您想保留固定的主要版本,例如 Node 12 发布时使用的 v6,请使用:

npm install -g npm@^6
Run Code Online (Sandbox Code Playgroud)

或使用特定版本

npm install -g npm@6.14.16
Run Code Online (Sandbox Code Playgroud)