## NodeJs的版本管理 [TOC] ### 为什么要做版本控制 `node`的版本发布遵循[语义化版本控制](http://www.tuicool.com/articles/JnmuE3R)的规则,这里简要描述一下我们需要关注的点 >版本号一共是3位 其格式为:MAJOR.MINOR.PATCH ,点号是分隔符, MAJOR。进行了不兼容的API改动 MINOR。添加了向后兼容的新特性 PATCH。进行了向后兼容的bug修复 一般,下面3种情况,需要用到版本管理 1.`node`的版本现在有`0.x.x,4.x.x,5.x.x,6.x.x,7.x.x`,这几个大版本就是MAJOR这个版本号做了修改,说明它们的API不完全兼容,假如你下载的一个非常重要的第三方模块和你当前的开发环境出现node版本兼容性问题(比如,第三方模块用`6.x.x`,而你用的是`5.x.x`),你就需要用版本管理工具切换到第三方模块使用的版本。 2.你需要用到一个功能,但是,你电脑上安装的`node`环境太老了,不支持该功能,这时,你就需要更新`node`版本。 3.在当前`node`环境遇到某一个原生模块的bug并且这个bug新发布的模块已经解决了。 ### 版本管理工具的使用 #### Windows系统 `Windows`系统下,这里推荐使用`nodist`,这里简单介绍下`nodist`的下载和使用 * [下载nodist](https://github.com/marcelklehr/nodist/releases); * 下载完成之后,可视化安装`nodist` * 安装完成之后就可以开始使用`nodist`做版本管理了。 下面将介绍`nodist`的使用,这里将介绍`nodist`的常用命令,有兴趣进一步了解`nodist`的朋友,可自行[查阅官网](https://github.com/marcelklehr/nodist) * 打印`node`列表 ~~~ $ nodist #打印当前所有已安装到电脑所有node版本,高亮 ~~~ ~~~ $ nodist dist #打印所有可下载的node版本 ~~~ * 切换node版本 ~~~ $ nodist global 4.x #设置全局的node使用4.x版本(4.x为你想切换的版本号,下同) #这个命令和你直接使用nodist 4.x效果一样,也是用得最多的命令 ~~~ ~~~ $ nodist local 4.x #设置在当前文件目录下,node使用4.x版本,不影响全局环境变量 ~~~ ~~~ $ nodist env 4.x #设置在当前命令行环境下,node使用4.x版本,不影响全局环境变量 ~~~ * 切换npm版本 ~~~ $ nodist npm global 3.x #设置全局的npm使用4.x版本(4.x为你想切换的版本号,下同) $ nodist npm global match #开启nodist自动匹配模式,总是选择和当前环境node版本相匹配的npm版本 ~~~ ~~~ $ nodist npm local 2.x #设置在当前文件目录下,npm使用2.x版本,不影响全局环境变量 ~~~ ~~~ $ nodist npm env 2.x #设置在当前命令行环境下,npm使用4.x版本,不影响全局环境变量 ~~~ * 其他操作 ~~~ $ nodist + 4.x # 先检查4.x版本是否存在,如果不存在则按安装 $ nodist + all # 安装所有模块 ~~~ ~~~ $ nodist - 4.1.1 # 删除node 4.1.1版本 ~~~ ~~~ $ nodist --help # 显示完整的nodist命令提示 ~~~ #### OSX系统(Mac) OSX系统下,我们使用`n`,这个模块非常简单,功能却非常强大 * 安装 ~~~ $ sudo npm install n -g #使用管理员权限全局安装,一般需要你输入管理员密码确认安装 ~~~ ` n`的使用 这里只介绍几个经常常用,更多细节请[查阅官网](https://github.com/tj/n) * 打印`node`版本 ~~~ $ n #打印所有已下载的node版本,并高亮当前使用的node版本 ~~~ ~~~ $ n ls #打印所有可下载的node版本,并高亮所有已下载版本,标记当前使用版本 ~~~ ~~~ $ n --latest #打印最新发布的node版本号 ~~~ ~~~ $ n --stable #打印最新发布的node稳定版版本号 ~~~ * 切换node版本(使用管理员权限切换到相应的模块) ~~~ $ sudo n latest #安装并切换或直接切换到最新发布的node版本 ~~~ ~~~ $ sudo n stable #安装并切换或直接切换到最新发布的node 稳定版本 ~~~ ~~~ $ sudo n <version> #安装指定node版本 ~~~