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

thi*_*ami 217 node.js npm

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

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

law*_*nce 306

在第一次提出这个问题三年之后,现在似乎答案更简单了.只需更新nvm安装的版本即可nvm install-latest-npm.

我刚刚安装了节点4.2.2,它带有npm 2.14.7,但我想使用npm 3.所以我做了:

cd ~/.nvm/versions/node/v4.2.2/lib
npm install npm
Run Code Online (Sandbox Code Playgroud)

简单!

是的,这应该适用于任何模块,而不仅仅是npm,您希望对特定版本的节点"全局".


编辑1:在最新版本中,nvm install --latest-npm智能并将模块安装到上面的路径而不是系统全局路径.


编辑2,另外两年和六个Node版本之后:如新的答案中所述,现在有一个命令:

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

nvm install --latest-npm:尝试升级到~/.nvm/versions/node/[your-version]/lib/node_modules/npm当前节点版本的最新版本

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

感谢@philraj在评论中指出这一点.

  • 如果你想要一个除最新版本之外的npm版本,运行`npm install npm @ major.minor.patch`来获得特定版本,例如`npm @ 3.10.9` (14认同)
  • 并且对于那些不知道他们的nvm在哪里的人,像我一样,运行一个`哪个npm`. (13认同)
  • 更简单:`nvm install-latest-npm`由samlandfried -/sf/answers/3326341371/回答如下 (3认同)
  • 类似的东西也适用于[nvm-windows](https://github.com/coreybutler/nvm-windows/),例如`cd~/AppData/Roaming/nvm/v5.10.1`. (2认同)
  • 对于将nvm用于Windows的任何人,都可以执行上述操作(运行npm install npm),但是在Windows的节点安装位置。在Windows 10中,这是〜/ AppData / Roaming / nvm / [您的版本]。即Users \ myusername \ AppData \ Roaming \ nvm \ v9.7.1 (2认同)
  • 尽管有很好的评论,但这并不是问题的全面答案。问题询问如何更改 npm,而答案仅涉及升级 npm。我有一个遗留项目需要旧版本的节点,我可以使用 nvm 获得它,但关联的 npm 版本太新了。不幸的是,迈克尔的赞成评论对我不起作用,看起来需要对现有文件/符号链接进行工作。然而,我通过用 5.6.0 替换最新版本,成功地完成了 Ryan Shillington 的回答。 (2认同)
  • 这不适用于“nvm-windows”,请检查此 - /sf/ask/3825666701/ (2认同)

fij*_*ron 42

nvm不处理npm.

因此,如果您要安装节点0.4.x(许多软件包仍然依赖它)并使用NPM,您仍然可以使用npm 1.0.x.

安装节点0.6.x(随npm 1.1.x一起提供)并使用npm安装nvm:

npm install nvm
. ~/nvm/nvm.sh
Run Code Online (Sandbox Code Playgroud)

使用nvm安装节点0.4.x:

nvm install v0.4.12
nvm use v0.4.12
Run Code Online (Sandbox Code Playgroud)

使用install.sh安装npm(注意-Lparam遵循任何重定向):

curl -L https://npmjs.org/install.sh | sh
Run Code Online (Sandbox Code Playgroud)

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

~/nvm/v0.4.12/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js
Run Code Online (Sandbox Code Playgroud)

如果你试图运行npm,它仍然会出错,但是如果再做nvm use v0.4.12一次,它现在应该可以运行了.

  • 这是一个非常古老的答案吗?我的npm是由nvm自动下载的,作为我正在使用的节点版本的依赖项. (7认同)
  • 谢谢!请注意,网址已更改为:`curl https://npmjs.org/install.sh | sh` (3认同)
  • 是啊.它太老了.如果您仍在使用节点0.4和旧的nvm,您可能会看到此问题. (2认同)

sam*_*ied 30

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

  • 你有这个文档的链接吗? (3认同)
  • 从“nvm help”控制台输出:“--latest-npm 安装后,尝试升级到给定节点版本上的最新工作 npm” 不过,我在“nvm”文档中没有找到对此的引用。如果找到请分享。 (2认同)
  • 它仅适用于 32 位 (2认同)
  • 是否可以将 npm 版本保存到类似 .nvmrc 的文件中? (2认同)

小智 26

npm install npm@x.x.x -g
npm install npm@5.4.0 -g
Run Code Online (Sandbox Code Playgroud)

  • 虽然问题是关于 nvm 的,但我实际上是为此而来的,谢谢。点赞。 (4认同)
  • 应该有一个解释。例如,想法/要点是什么?它应该做什么?“xxx”是字面意思吗?是否并排(同时)安装两个版本?来自[帮助中心](https://stackoverflow.com/help/promotion):*“...始终解释为什么您提出的解决方案是合适的以及它是如何工作的”*。请通过[编辑(更改)您的答案](https://stackoverflow.com/posts/46063210/edit) 进行回复,而不是在评论中回复(***没有***“编辑:”、“更新:”或类似 - 答案应该看起来像今天写的一样)。 (4认同)
  • 由于有“-g”标志,无论您使用 nvm 安装了哪个版本的 Node,此命令都将起作用。当您在 nvm 中切换版本时,npm 版本也会更改,因此很容易撤消此操作。 (3认同)

Rya*_*ton 22

我在Windows上,无法正常工作。我不断收到有关文件妨碍的错误。这虽然有效:

cd %APPDATA%\nvm\v8.10.0           # or whatever version you're using
mv npm npm-old
mv npm.cmd npm-old.cmd
cd node_modules\
mv npm npm-old
cd npm-old\bin
node npm-cli.js i -g npm@latest

cd %APPDATA%\nvm\v8.10.0 # or whatever version you're using
rm npm-old
rm npm-old.cmd
cd node_modules\
rm -rf npm-old
Run Code Online (Sandbox Code Playgroud)

繁荣起来,我又重新开始营业。

  • 谢谢,这在Windows上也对我有用。(有相同的文件冲突问题) (3认同)
  • 谢谢您,他们可能需要修复nvm Windows上每个旧nodejs版本上npm更新的方式。 (2认同)
  • 在使用nodejs v10.15.3的Windows上工作,对我来说,必须将`mv`更改为`ren`,将`rm`更改为`del`和`rmdir`。 (2认同)
  • 我发现从 npm@6 升级时,我还必须重命名“npx”和“npx.cmd”。不确定哪个版本引入了 npx。 (2认同)

Aru*_*ddy 17

在基于Linux的操作系统上更改npm版本并不是一个简单的命令过程.我已经完成了以下操作,切换回旧版本的npm.这应该可以使任何版本的npm工作.首先安装你想要使用的npm版本:

sudo npm install -g npm@X.X.X
Run Code Online (Sandbox Code Playgroud)

删除/ usr/local/bin /中的sym链接

sudo rm /usr/local/bin/npm
Run Code Online (Sandbox Code Playgroud)

使用您安装的所需版本的npm重新创建sym链接

sudo ln -s /usr/bin/npm@X.X.X /usr/local/bin/npm
Run Code Online (Sandbox Code Playgroud)

  • 在尝试了几件事后,对我来说,只需使用`sudo npm install -g npm @ xxx`让我从`npm -v`回复该版本.无论如何,这至少可以从4.x到2.15.9. (3认同)

hig*_*ump 15

您可以使用 nvm 安装两个版本的 Node.js,并在每个 Node.js 环境上安装不同版本的 npm。

例如,nvm install 14.18.0nvm install 14.18.1安装两个独立的 Node.js 环境。

  • 在14.18.0中,您可以使用npmv6(默认安装)。
  • 在 14.18.1 中,您可以使用npmv7(使用 进行安装npm install -g npm@7)。

这样,您就可以轻松切换到不同的 npm 版本。

nvm use 14.18.0

    Now using node v14.18.0 (npm v6.14.15)

nvm use 14.18.1

    Now using node v14.18.1 (npm v7.24.2)
Run Code Online (Sandbox Code Playgroud)


Alv*_*ith 11

  1. 从这里找到您想要使用的 Node.js 和 npm版本
  2. nvm use 8.11.4
  3. 您已经获得了 npm 5.6 和 Node.js 8.11.4

就跟着去吧nvm use node_version


小智 8

通过查看www.npmjs.com/install.sh,我发现有一种方法可以通过设置环境变量来安装特定版本

export npm_install="2.14.14"

然后按照npmjs.com中的说明运行download-script :

curl -L https://www.npmjs.com/install.sh | sh

如果省略设置npm_install变量,那么它将安装标记为最新的版本

  • 我不得不使用`curl -L https://www.npmjs.com/install.sh | sudo sh`,aaaa和这个方法不起作用,即使我已经导出了所述环境变量,也为我提供了最新版本.可恶.我想从2.14.7开始2.15.9版本,下面的回答让我看到3.8.6,现在这个答案让我看到4.0.2.WTF. (2认同)

Dee*_*ndh 8

我们可以使用n轻松解决这个问题。

要安装n

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

切换版本:

n latest
Run Code Online (Sandbox Code Playgroud)

要切换到特定版本:

n 10.16.0
Run Code Online (Sandbox Code Playgroud)

  • `npm` 和 `n` 都管理 `nodejs` 版本,而不是 `npm` 版本。 (2认同)

adn*_*2nd 5

在Windows中,以管理员身份运行您的终端(以防我遇到权限问题)。然后使用特定的节点版本(例如7.8.0)

nvm use 7.8.0
Run Code Online (Sandbox Code Playgroud)

然后通过以下方式将您的npm更新为所需的特定版本

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