今天的話題包括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 標識最新版 ,
n 使用一个版本 n use <version> n 删除一个版本 n rm <version>