最近在使用npm過程當中,發現全局安裝總會遇到permission相關的錯誤,因此老是要在前面加sudo,還得不停輸入密碼。node
懶惰使我進步,隨手google了一下相關問題的解決方案,發現npm在官方文檔中早有明示How to Prevent Permissions Errors。據其描述,根本緣由實際上是Node.js安裝包將程序安裝在了一個只有local permissions的地址上(寫入是須要管理員權限的)。而其提供了兩種修復的方式,其中的推薦方式既是本文要說的nvm的方式。linux
nvm(Node Version Manager)經過對node和npm集中的版本管理主要解決了兩個問題git
這裏簡單介紹一下nvm在MacOS下的安裝和使用(注,nvm主要仍是面向mac os和linux用戶,使用windows的客官請看這裏)github
在安裝以前,首先應該須要考慮一下是否要保留原有的系統安裝的node。nvm是能夠保留原有node來安裝的,也提供了切回system node
的方式。npm
可是要注意:
若是系統中存在多用戶,那麼當前安裝的nvm是隻針對你的,其它用戶若是沒有安裝則只能使用到系統安裝的node版本。二者全局安裝的node modules地址是不相同的(/usr/local/lib/node_modules/*
VS~/.nvm/versions/node/vX.X.X/lib/node_modules/*
)。必定程度上是有版本不一致的風險的。
若是選擇卸載原有系統node,這裏有一篇很實用的講解windows
安裝方式比較簡單,只要執行如下的腳本。腳本clone了項目代碼,並進行了環境變量的設置。若是出現問題能夠查看github上的trouble shooting。bash
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
在安裝完後,關掉終端重開一個新的,輸入如下指令驗證安裝。curl
command -v nvm # should return nvm
注:可使用同一腳原本自動更新nvmgoogle
安裝完後,使用起來就很是簡單明快了,如下是一些經常使用功能url
1. 安裝某一版本的node nvm install
nvm install --lts #安裝最新的lts版本的node nvm install node #安裝最新版本的node nvm install 6.14.4 #安裝node版本6.14.4
2. 列出全部node版本
nvm ls #本機全部版本 nvm ls -remote #遠端全部版本
3. 切換、使用某一版本的node nvm use
nvm use --lts #使用最新的lts版本的node nvm use node #使用最新版本的node nvm use 6.14.4 #使用node版本6.14.4
4. 啓動node nvm run
nvm run --lts #啓動最新的lts版本的node nvm run node #啓動最新版本的node nvm run 6.14.4 #啓動node版本6.14.4
5. 使用某一版本執行
nvm exec 4.2 node --version
6. 查詢某一版本的安裝位置
nvm which 5.0
node, --lts都是nvm自動維護的別稱,表示最新版本和最新的long-term support版本。
另,system一樣也是別稱,表示node的非nvm安裝的system版本
可使用--reinstall-packages-from=node
來自動在新的node中安裝上一版本已有的node modules
nvm install node --reinstall-packages-from=node #從上一版本繼承 nvm install 6 --reinstall-packages-from=5 #從某一版本繼承
很神祕的是nvm windows很貼心的提供了命令行設置鏡像的命令,而mvn木有,因此只好手動來。
1 手動方案,每次執行nvm安裝時,執行
export NVM_NODEJS_ORG_MIRROR=https://nodejs.org/dist nvm install node
2 永久方案,固然是將export放到~/.bashrc
中
npm install的安裝速度也是很感人的。因此,安裝完node通常會把npm的鏡像也設置成淘寶滴。
npm config set registry https://registry.npm.taobao.org
注:勸君莫用cnpm,與npm基本無異,然而常常會出一些想不到的bug。
nvm的卸載是手動完成的,可是不復雜。
首先,刪掉nvm文件
$ rm -rf "$NVM_DIR"
隨後,修復環境變量,修改~/.bashrc
(若是沒有就去bash_profile找找),刪掉如下這幾行
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [[ -r $NVM_DIR/bash_completion ]] && \. $NVM_DIR/bash_completion
搞定。
mvn提供了一種管理Node.js版本的便捷方式,無論是安裝、切換、刪除均可以一步到位,無疑是現階段的首選。