## 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版本
~~~