Nvm 管理不同版本的 node 與 npm
nvm 是 NodeJS 的多版本管理工具,有點(diǎn)類似管理 Ruby 的 rvm,如果是需要管理 Windows 下的 node,官方推薦是使用 nvmw 或 nvm-windows 。
卸載已安裝的全局 node/npm
在官網(wǎng)下載的 node 安裝包,運(yùn)行后會自動安裝在全局目錄,其中node
命令在 /usr/bin/node ,npm
命令在全局 node_modules 目錄中,具體路徑為 /usr/lib[lib64]/node_modules/npm
。
安裝 nvm 之后最好先刪除下已安裝的 node 和全局 node 模塊:
npm ls -g --depth=0 // 查看已經(jīng)安裝在全局的模塊,以便刪除這些全局模塊后再按照不同的 node 版本重新進(jìn)行全局安裝
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 // 安裝最新穩(wěn)定版 node,現(xiàn)在是 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 // 設(shè)置默認(rèn) 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
如果默認(rèn) node 版本(通過 nvm alias 命令設(shè)置的)與項(xiàng)目所需的版本不同,則可在項(xiàng)目根目錄或其任意父級目錄中創(chuàng)建 .nvmrc
文件,在文件中指定使用的 node 版本號:
cd <項(xiàng)目根目錄> // 進(jìn)入項(xiàng)目根目錄
echo 4 > .nvmrc // 添加 .nvmrc 文件
nvm use // 無需指定版本號,會自動使用 .nvmrc 文件中配置的版本
node -v // 查看 node 是否切換為對應(yīng)版本
nvm 與 n 的區(qū)別
node 版本管理工具還有一個(gè)是 n 命令,n 命令是作為一個(gè) node 的模塊而存在,而 nvm 是一個(gè)獨(dú)立于 node/npm 的外部 shell 腳本,因此 n 命令相比 nvm 更加局限。
由于 npm 安裝的模塊路徑均為 /usr/lib[lib64]/node_modules
,當(dāng)使用 n 切換不同的 node 版本時(shí),實(shí)際上會共用全局的 node/npm 目錄。 因此不能很好的滿足『按不同 node 版本使用不同全局 node 模塊』的需求。