Nvm 管理不同版本的 node 与 npm
nvm 是 NodeJS 的多版本管理工具,有点类似管理 Ruby 的 rvm,如果是需要管理 Windows 下的 node,官方推荐是使用 nvmw 或 nvm-windows 。
卸载已安装的全局 node/npm
在官网下载的 node 安装包,运行后会自动安装在全局目录,其中node
命令在 /usr/bin/node ,npm
命令在全局 node_modules 目录中,具体路径为 /usr/lib[lib64]/node_modules/npm
。
安装 nvm 之后最好先删除下已安装的 node 和全局 node 模块:
npm ls -g --depth=0 // 查看已经安装在全局的模块,以便删除这些全局模块后再按照不同的 node 版本重新进行全局安装
sudo rm -rf /usr/lib[lib64]/node_modules // 删除全局 node_modules 目录
sudo rm /usr/bin/node // 删除 node
cd /usr/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm // 删除全局 node 模块注册的软链
// suse uninstall zypper install package
zypper uninstall node
Install nvm
To install or update nvm, you can use the install script using cURL:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.4/install.sh | bash
or Wget:
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.4/install.sh | bash
The script clones the nvm repository to ~/.nvm
and adds the source line to your profile (~/.bash_profile
, ~/.zshrc
, ~/.profile
, or ~/.bashrc
).
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
can customize the install source, directory, profile, and version using the NVM_SOURCE
, NVM_DIR
, PROFILE
, and NODE_VERSION
variables. Eg: curl ... | NVM_DIR=/usr/local/nvm bash
for a global install.
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.4/install.sh | NVM_DIR=/usr/local/nvm bash
Verify installation
command -v nvm
or which nvm
Install node/npm and Change version
nvm ls
nvm install stable|node // 安装最新稳定版 node,现在是 6.3.1
nvm install 4.4.7 // 安装 4.4.7 版本
nvm install 0.12.12 // 安装 0.12.12 版本
// 说明:以下模块安装仅供演示说明,并非必须安装模块
nvm use node
nvm run node --version
nvm exec 4.2 node --version
nvm which 6.3.2
nvm use 0 // 切换至 0.12.12 版本
npm install -g mz-fis #安装 mz-fis 模块至全局目录,安装完成的路径是 ~/.nvm/versions/node/v0.12.12/lib/mz-fis
nvm use 4 // 切换至 4.4.7 版本
npm install -g react-native-cli // 安装 react-native-cli 模块至全局目录,安装完成的路径是 ~/.nvm/versions/node/v4.4.7/lib/react-native-cli
nvm alias default 0.12.12 // 设置默认 node 版本为 0.12.7
-
node
: this installs the latest version of node -
iojs
: this installs the latest version of io.js -
stable
: this alias is deprecated, and only truly applies tonode
v0.12
and earlier. Currently, this is an alias fornode
.
Use .nvmrc
file, Configing projects use node version
如果默认 node 版本(通过 nvm alias 命令设置的)与项目所需的版本不同,则可在项目根目录或其任意父级目录中创建 .nvmrc
文件,在文件中指定使用的 node 版本号:
cd <项目根目录> // 进入项目根目录
echo 4 > .nvmrc // 添加 .nvmrc 文件
nvm use // 无需指定版本号,会自动使用 .nvmrc 文件中配置的版本
node -v // 查看 node 是否切换为对应版本
nvm 与 n 的区别
node 版本管理工具还有一个是 n 命令,n 命令是作为一个 node 的模块而存在,而 nvm 是一个独立于 node/npm 的外部 shell 脚本,因此 n 命令相比 nvm 更加局限。
由于 npm 安装的模块路径均为 /usr/lib[lib64]/node_modules
,当使用 n 切换不同的 node 版本时,实际上会共用全局的 node/npm 目录。 因此不能很好的满足『按不同 node 版本使用不同全局 node 模块』的需求。