本文详细介绍 Node.js 版本管理工具 nvm 和 n 的安装与使用。重点讲解通过 Homebrew 安装 nvm 后,如何在 bash 或 zsh 中配置环境变量以解决重启终端后 node 和 npm 失效的问题,并对比 nvm 与 n 的适用场景。
Node.js 版本管理工具概述
本文主要涵盖两个核心内容。
第一部分是关于在 Node.js 环境中使用 nvm 或 n 进行版本控制;第二部分是解决 nvm 安装 Node.js 版本后,重启终端导致 node 和 npm 环境变量失效的问题。
首先讨论如何选择 Node.js 的版本管理工具。
值得庆幸的是,Node.js 终于发布了具有里程碑意义的正式版本 1.0。尽管目前我们看到的是 V4.0,但这实际上是 Node.js 真正意义上的 1.0 版本,io.js 也圆满完成了它的历史使命。
回顾近年来 Node.js 以及 io.js 的快速发展和频繁的版本迭代,我们有必要使用一个 Node.js 版本管理工具来控制当前系统中的 Node.js 版本。
为什么要进行版本管理?
新版本中采用了最新的 V8 引擎,ES 6 的所有新特性得以充分展现,这确实令人兴奋。然而,如果盲目升级,首先面临的是开发环境与线上发布环境不一致的问题,由此引发的后果不言而喻,一旦出现问题,可能面临严重的责任。其次,之前的一些开源包可能需要重新编译,特别是那些用 C++ 编写的模块。
因此,你需要一个 Node.js 版本管理软件。
nvm 安装与环境变量配置
目前流行的 Node.js 版本管理工具有哪些?
nvm
我们可以使用 brew 来安装 nvm。
brew install nvm
这里需要特别注意:使用 brew 安装后,务必在 bash 或 zsh 的配置文件中设置相关路径,否则当你重新启动终端时,会发现 node 和 npm 的环境变量失效。
在此穿插说明我们要分享的第二个话题:nvm 重启后终端中 node 和 npm 失效的解决方案。
如果你采用了上述 brew 的安装方法,安装成功后,请按照以下步骤设置你的 shell 配置文件。
brew info nvm
你将看到如下的输出帮助信息。
nvm: stable 0.26.1 (bottled), HEAD
Manage multiple Node.js versions
https://github.com/creationix/nvm
/usr/local/Cellar/nvm/0.26.1 (3173 files, 56M) *
Poured from bottle
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/nvm.rb
==> Caveats
Add NVM's working directory to your $HOME path (if it doesn't exist):
mkdir ~/.nvm
Copy nvm-exec to NVM's working directory
cp $(brew --prefix nvm)/nvm-exec ~/.nvm/
Add the following to $HOME/.bashrc, $HOME/.zshrc, or your shell's
equivalent configuration file:
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh
Type `nvm help` for further information.
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
我们需要按照上述提供的方法,首先在用户主目录下创建 .nvm 文件。
mkdir ~/.nvm
然后将 nvm-exec 文件拷贝到你刚才新建的 .nvm 目录下。
cp $(brew --prefix nvm)/nvm-exec ~/.nvm/
接着编辑你的 bash 配置文件 $HOME/.bashrc,如果你使用 zsh,则编辑 $HOME/.zshrc 配置文件。
nano ~/.bashrc
或者
nano ~/.zshrc
将以下内容粘贴进去。
export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh
最后,让你的 shell 配置立即生效。
source ~/.bashrc
或者
`source ~/.zshrc'
这样,你就不会再出现关闭终端重启,或者重启机器后发现 node、npm 等系统环境变量失效的问题了。
nvm 与 n 的区别及使用建议
nvm 和 n 的区别。
nvm 类似于 Python 的 virtualenv 或者 Ruby 的 rvm,它是一个独立安装的软件。n 其实是一个 npm 全局的开源包,需要使用 npm 来全局安装。n 更加轻巧,但是 nvm 更加独立。
假如你有一台新电脑,如果你想使用版本管理,那么 nvm 是你的选择,因为它是一个独立的软件,安装后你可以随意下载并切换你需要的版本。
但是 n 是依赖在 npm 下的一个包,也就是说,如果你的电脑环境还没有 Node.js / npm,你还无法使用 n。因此,在使用时,大家可以针对自己的情况权衡。我本人使用 nvm 来控制 Node 版本。
nvm 常用命令与 n 的安装使用
nvm 的使用。
查看可以安装的版本。
nvm ls-remote
查看已经安装的版本。
nvm ls
安装一个指定的版本。
nvm install <version>
上面的 version 可以指定你在 nvm ls-remote 里面列出来的版本号即可。
删除指定版本。
nvm use <version>
n 的安装。
npm install -g n
当然,你还可以去 github 下载你的源代码自己本地编译。
$ git clone https://github.com/visionmedia/n.git
$ cd n
$ [sudo] make install
n 安装指定版本
n stable/laster/< version>
在 n 后面更一个标识 stable 标识最新稳定版, laster 标识最新版 ,<version> 就是你可以具体指定一个版本号
n 使用一个版本
n use <version>
n 删除一个版本
n rm <version>