如何使用nvm更改npm的版本?

node.js Node.js

樱小胖Mandy

2020-03-23

我一直在使用NVM为节点工作安装最新版本的nodeJS。对于安装单独的版本并在它们之间进行切换,它工作得很好。它还将在每个本地... / bin文件夹中安装NPM的最新版本以及节点二进制文件。但是,似乎没有任何方法可以切换我正在使用的NPM版本(或者至少我无法弄清楚)。

我能想到的唯一解决方案是删除默认的二进制文件(这是我第一次使用NVM安装节点时安装的NPM),并放置最新的NPM二进制文件。但是,我想知道是否还有更好的方法可以做到这一点。

第2651篇《如何使用nvm更改npm的版本?》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

3个回答
猪猪路易 2020.03.23

nvm现在有一个更新npm的命令。nvm install-latest-npmnpm install --latest-npm

LGil 2020.03.23

nvm不处理npm。

因此,如果要安装节点0.4.x(许多软件包仍依赖该节点)并使用NPM,则仍可以使用npm1.0.x。

安装节点0.6.x(npm 1.1.x随附)并使用npm安装nvm:

npm install nvm
. ~/nvm/nvm.sh

使用nvm安装节点0.4.x:

nvm install v0.4.12
nvm use v0.4.12

使用install.sh安装npm(请注意-L参数以进行任何重定向):

curl -L https://npmjs.org/install.sh | sh

这将检测节点0.4.12并将npm 1.0.106安装在〜/ nvm / v0.4.12 / lib / node_modules文件夹中,并为nvm创建符号链接

~/nvm/v0.4.12/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js

如果您尝试运行npm,它仍然会给出错误,但是如果您nvm use v0.4.12再次执行,它现在应该可以工作。

卡卡西老丝Pro 2020.03.23

编辑:自从首次回答这个问题以来已有几年了,正如在新答案中指出的那样,现在有一个命令可以解决:

nvm现在有一个更新npm的命令。nvm install-latest-npmnvm install --latest-npm

nvm install-latest-npm:尝试升级到npm当前节点版本上的最新版本

nvm install --latest-npm:安装后,尝试在给定的节点版本上升级到最新的工作npm

Below are previous revisions of the correct answer to this question.

Over three years after this question was first asked, it seems like the answer is much simpler now. Just update the version that nvm installed, which lives in ~/.nvm/versions/node/[your-version]/lib/node_modules/npm.

I just installed node 4.2.2, which comes with npm 2.14.7, but I want to use npm 3. So I did:

cd ~/.nvm/versions/node/v4.2.2/lib
npm install npm

Easy!

And yes, this should work for any module, not just npm, that you want to be "global" for a specific version of node.


EDIT 1: In the newest version, npm -g is smart and installs modules into the path above instead of the system global path.


Thanks @philraj for pointing this out in a comment.

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android