Skip to content

node.js 版本控制 nvm 和 n 使用 及 nvm 重启终端失效的解决方法

--> -->

  • 文章目录

    • 第一部分 用什么来管理 node.js 版本
      • 所以,你需要一个 node.js 的版本管理软件
    • nvm
    • 这里要穿插说一下我们要分享的第二个话题
    • nvm 和 n 的区别
    • nvm 使用
    • n 的安装
  • 今天的话题包括2个部分

    1.   下使用 nvm 或者 n 来进行版本控制
      
    2.  * nvm 安装node.js 版本后,重启终端 node , [npm](<http://yijiebuyi.com/so.html?k=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 的版本管理软件

现在流行的 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 类似于 Python 的 virtualenv 或者 Ruby 的 rvm ,它是一个独立安装的软件
n 其实是一个 npm 全局的开源包 ,需要使用 npm 来全局安装
n 更加轻巧,但是 nvm 更加独立.
假如你有一台新带电脑,如果你想使用 版本管理,那么 nvm 是你的选择,因为它的独立的软件,安装后你可以随意下载切换你需要的版本.
但是 n 是依赖在 npm 下的一个包,也就是说 你的电脑环境还没有 node / npm 的时候,你还用不了 n .
所以在使用的时候,大家可以针对自己的情况权衡.我本人使用 nvm 来控制 node 版本.

nvm 使用

查看可以安装的版本
nvm ls-remote

查看已经安装的版本
nvm ls

安装一个指定的版本
nvm install &lt;version&gt;

上面的 version 可以指定你在 nvm ls-remote 里面列出来的版本号即可

删除指定版本
nvm use &lt;version&gt;

n 的安装

npm install -g n

当然,你还可以去 github 下载你的源代码自己本地编译

$ git clone https://github.com/visionmedia/n.git
$ cd n
$ [sudo] make install

n 安装指定版本
n stable/laster/&lt; version&gt;

在 n 后面更一个标识 stable 标识最新稳定版, laster 标识最新版 , 就是你可以具体指定一个版本号

n 使用一个版本
n use &lt;version&gt;

n 删除一个版本
n rm &lt;version&gt;