今天的話題包括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 標識最新版 ,<version> 就是你可以具體指定一個版本號
n 使用一個版本 n use <version> n 刪除一個版本 n rm <version>