nodejs的版本从0.x到4.x到6.x,跨度比较大,所以经常会需要在单台机器上安装多个版本的nodejs,这种情况下可以考虑用nvm来进行nodejs的版本管理。下面分享一下具体的一些使用和实现原理。
安装nvm
安装方面其实挺简单的,max os x系统下可以通过brew进行安装。
$ brew install nvm
其余方式可以参考官网:https://github.com/creationix/nvm
使用nvm
使用nvm help可以查看相应的使用说明,这里就不贴了。说下常用的几个:
安装指定的nodejs
$ nvm install v0.10.32
卸载版本
$ nvm uninstall 0.10.32
切换到指定的nodejs版本
$ nvm use 0.10.32
设置默认版本
$ nvm alias default 0.10.32
列出所有版本
$ nvm ls
nvm实现原理
一般大抵上这种软件的实现原理都是在一个目录下存放多个版本的目录,在切换时候将相应的版本路径加入PATH中,从而实现版本的切换。
先列出下所有的nodejs版本
$ nvm ls

nvm ls列出所有node版本
查看node版本
$ node -v v4.4.5
查看node命令全路径
$ which node /Users/chenjiebin/.nvm/versions/node/v4.4.5/bin/node
可以看到nvm的数据是存储在在用户根目录下,node命令实际上是4.4.5版本下的node命令。
切换版本试试
$ nvm use 0.10.45 Now using node v0.10.45 (npm v2.15.1) $ which node /Users/chenjiebin/.nvm/v0.10.45/bin/node
可以看到node命令引用的是0.10.45目录下的命令。
熟悉unix的童靴马上就会猜到应该是PATH路径被修改了,下面验证一下。
$ echo $PATH /Users/chenjiebin/.nvm/v0.10.45/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/usr/local/go/bin:/Users/chenjiebin/Sites/golang/bin
看到了吗,/Users/chenjiebin/.nvm/v0.10.45/bin目录被设置到了第一位。
切换回去看看
$ nvm use 4.4.5 Now using node v4.4.5 (npm v3.10.2) $ echo $PATH /Users/chenjiebin/.nvm/versions/node/v4.4.5/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/usr/local/go/bin:/Users/chenjiebin/Sites/golang/bin
确实如此。
小结
不光是node命令,还有npm和通过npm安装的全局依赖库都会安装到指定的版本目录中,不必担心互相影响。上次安装PM2来跑nodejs项目的时候还担心会互相影响,后来才发现在不同的node版本安装的PM2是两个独立的程序,启动后也是独立的进程,完全不影响。
只是在安装nvm的时候要注意一下,原先机器上如果是一个版本,安装nvm后,原先的版本可能就被覆盖掉了,要稍微注意一下。
转载请注明:快乐编程 » nodejs多版本管理工具nvm和实现原理