简单谈谈node.js 版本控制 nvm和 n

 更新时间:2015年10月15日 11:23:24   投稿:hebedich  
大量开发者的贡献使Node版本的迭代速度很快,版本很多(横跨0.6到0.11),所以升级Node版本就成为了一个问题。目前有n和nvm这两个工具可以对Node进行无痛升级,本文简单介绍一下二者的使用。

今天的话题包括2个部分

1. node.js 下使用 nvm 或者 n 来进行版本控制
2. 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 的版本管理软件

现在流行的 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 <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>

相关文章

  • node.js Sequelize实现单实例字段或批量自增、自减

    node.js Sequelize实现单实例字段或批量自增、自减

    Sequelize 可以实现针对单个实例的一或多个字段的自增、自减操作,也可以对符合条件的数据进行批量的自增、自减操作。单个实例字段的自增、自减可以利用Instance的相应方法实现,而批量自增、自减则需要借助sequelize提供的字面量方法实现。下面来看看详细的介绍吧。
    2016-12-12
  • Node.js和Express中设置TypeScript的实现步骤

    Node.js和Express中设置TypeScript的实现步骤

    本文主要介绍了Node.js和Express中设置TypeScript的实现步骤文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-11-11
  • nodejs脚本centos开机启动实操方法

    nodejs脚本centos开机启动实操方法

    在本篇文章里小编给大家整理的是关于nodejs脚本centos开机启动实操方法,有兴趣的朋友们参考下。
    2020-03-03
  • express中创建 websocket 接口及问题解答

    express中创建 websocket 接口及问题解答

    本文主要介绍了express中创建 websocket 接口及问题解答,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较

    nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEq

    这篇文章主要介绍了node项目中遇到使用断言测试程序,看了下nodejs的api之后,对nodejs中assert断言的几个方法做个简单的记录,需要的朋友可以参考下
    2017-09-09
  • Nodejs + Websocket 指定发送及群聊的实现

    Nodejs + Websocket 指定发送及群聊的实现

    这篇文章主要介绍了Nodejs + Websocket 指定发送及群聊的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • NodeJs的fs读写删除移动监听

    NodeJs的fs读写删除移动监听

    这篇文章主要介绍了NodeJs的fs读写删除移动监听,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-04-04
  • 基于Express+multer实现文件上传功能

    基于Express+multer实现文件上传功能

    Multer是Node.js中的一个第三方包,或者说是第三方中间件,主要用于是实现文件上传的功能,本文小编讲给大家详细介绍一下基于Express+multer来实现文件上传功能,文章通过代码示例和图文介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • node.js域名解析实现方法详解

    node.js域名解析实现方法详解

    这篇文章主要介绍了node.js域名解析实现方法,结合实例形式详细分析了node.js使用dns.lookup()及dns.resolve4()进行域名解析的相关操作技巧与注意事项,需要的朋友可以参考下
    2019-11-11
  • Node.js高级编程使用RPC通信示例详解

    Node.js高级编程使用RPC通信示例详解

    这篇文章主要为大家介绍了Node.js高级编程使用RPC通信示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01

最新评论