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

Node.js 如何使用nvm更改npm的版本?,node.js,npm,Node.js,Npm,我一直在使用NVM为我的节点工作安装最新版本的nodeJS。对于安装不同的版本并在它们之间切换,它完全可以正常工作。它还将在每个本地…/bin文件夹中安装最新版本的NPM以及节点二进制文件。然而,似乎没有任何方法可以切换我正在使用的NPM版本(或者至少我无法理解) 我能想到的唯一解决方案是删除它默认使用的二进制文件(这是我第一次使用NVM安装node时安装的NPM),并在其位置放置最新的NPM二进制文件。然而,我想知道是否有更好的方法可以做到这一点。nvm不处理npm 因此,如果您想安装node

我一直在使用NVM为我的节点工作安装最新版本的nodeJS。对于安装不同的版本并在它们之间切换,它完全可以正常工作。它还将在每个本地…/bin文件夹中安装最新版本的NPM以及节点二进制文件。然而,似乎没有任何方法可以切换我正在使用的NPM版本(或者至少我无法理解)


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

nvm不处理npm

因此,如果您想安装node 0.4.x(许多软件包仍然依赖它)并使用NPM,那么您仍然可以使用NPM 1.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
参数以遵循任何重定向):

这将检测节点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

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

编辑:自首次回答此问题几年后,如中所述,现在有一个命令用于此:


nvm现在有一个更新npm的命令。它是
nvm安装最新的npm
nvm安装--最新的npm

nvm安装最新的npm
:尝试在当前节点版本上升级到最新的工作
npm

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

下面是对该问题正确答案的先前修订

在这个问题被首次提出三年后,现在的答案似乎简单多了。只需更新nvm安装的版本,它位于
~/.nvm/versions/node/[您的版本]/lib/node\u modules/npm

我刚刚安装了node 4.2.2,它与npm 2.14.7一起提供,但我想使用npm 3。所以我做了:

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

是的,这应该适用于任何模块,而不仅仅是npm,对于特定版本的节点来说,这是“全局的”


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



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

在基于linux的OSs上更改npm版本还不是一个简单的单命令过程。为了切换回旧版本的npm,我做了以下工作。这应该可以让任何版本的npm正常工作。首先安装要使用的npm版本:

sudo npm install -g npm@X.X.X
卸下/usr/local/bin中的sym链接/

sudo rm /usr/local/bin/npm
使用您安装的所需版本的npm重新创建sym链接

sudo ln -s /usr/bin/npm@X.X.X /usr/local/bin/npm
通过查看www.npmjs.com/install.sh,我发现有一种通过设置环境变量来安装特定版本的方法

export npm\u install=“2.14.14”

然后按照npmjs.com上的说明运行下载脚本:

curl-L|sh


如果忽略设置npm\u install变量,那么它将安装他们标记为最新的版本

那么
npm i-g npm
呢?你也试过运行这个吗?

nvm现在有一个更新npm的命令。这是nvm安装最新的npm或
npm安装--最新的npm

在上述说明上有细微的变化,对我有用。(MacOS Sierra 10.12.6)

npm install npm@x.x.x -g
npm install npm@5.4.0 -g

在windows中,以管理员身份运行终端(以防像我一样存在权限问题)。然后使用特定的节点版本(如7.8.0),由

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

npm install -g npm@5.0.3

我在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

然后,我又开始工作了。

在现有节点安装的基础上安装了
nvm windows之后,我遇到了同样的问题。解决方法就是按照说明进行操作:

您还应该删除现有的npm安装位置(例如。 “C:\Users\AppData\Roaming\npm”),以便nvm安装位置 将正确使用


在Windows上安装和使用NVM

以下是在Windows上安装NVM的步骤:

NVM代表节点版本管理器,它将帮助切换节点版本以供特定使用。它还允许用户使用多个npm和节点版本

安装nvm安装程序。 使用命令“nvm list”检查已安装节点版本的列表。 键入“nvm使用版本号[6.9.3]”切换版本。 为了

  • 从这里查找要使用的节点和npm版本
  • nvm使用8.11.4
  • 您已经获得了节点8.11.4的NPM5.6

  • 只需使用nvm use node_version

    更改版本的简单方法是首先使用 nvm ls 然后从列表中选择版本
    nvm使用版本

    出于某种原因
    npm安装-gnpm@X.X.X
    不起作用,所以我在
    package.json
    文件夹中更改了npm的版本

    ➜  ~ 哪个npm
    /opt/homebrew/bin/npm
    
    然后跑

    npm安装npm
    

    macOS 11.2.2,M1(arm64)

    为什么要更改NPM的版本,你不会安装任何只适用于旧版本NPM的软件包。在node 0.6之后,node附带了最新的NPM。所以,更改节点版本也会更改npm版本。除非它不通过NVM。是的,node附带了NPM,但这仅仅意味着它会在它旁边安装一个二进制文件。我可以在各自的文件夹中看到这两个二进制文件,但当我运行“NVMU”时
    nvm use 7.8.0
    
    npm install -g npm@5.0.3
    
    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