在公交車上刷微博,還是有很多同學在咨詢:
于是我覺得應該寫一篇文章解答所有這些起步問題,讓新同學也能順順利利入門。
快速搭建 Node.js 開發環境
如果你想長期做 node 開發, 或者想快速更新 node 版本, 或者想快速切換 node 版本, 那么在非 Windows(如 osx, linux) 環境下, 請使用 nvm 來安裝你的 node 開發環境, 保持系統的干凈.
如果你使用 Windows 做開發, 那么你可以使用 nvmw 來替代 nvm
osx, linux 環境
如果你是 windows 環境開發, 請跳過這里, 直接查看下一章.
git clone nvm
直接從 github clone nvm 到本地, 這里假設大家都使用 ~/git
目錄存放 git 項目:
$ cd ~/git $ git clone https://github.com/cnpm/nvm.git
配置終端啟動時自動執行 source ~/git/nvm/nvm.sh
, 在 ~/.bashrc
, ~/.bash_profile
, ~/.profile
, 或者 ~/.zshrc
文件添加以下命令:
source ~/git/nvm/nvm.sh
重新打開你的終端, 輸入 nvm
$ nvm Node Version Manager Usage: nvm help Show this message nvm --version Print out the latest released version of nvm nvm install [-s] <version> Download and install a <version>, [-s] from source nvm uninstall <version> Uninstall a version nvm use <version> Modify PATH to use <version> nvm run <version> [<args>] Run <version> with <args> as arguments nvm current Display currently activated version nvm ls List installed versions nvm ls <version> List versions matching a given description nvm ls-remote List remote versions available for install nvm deactivate Undo effects of NVM on current shell nvm alias [<pattern>] Show all aliases beginning with <pattern> nvm alias <name> <version> Set an alias named <name> pointing to <version> nvm unalias <name> Deletes the alias named <name> nvm copy-packages <version> Install global NPM packages contained in <version> to current version Example: nvm install v0.10.24 Install a specific version number nvm use 0.10 Use the latest available 0.10.x release nvm run 0.10.24 myApp.js Run myApp.js using node v0.10.24 nvm alias default 0.10.24 Set default node version on a shell Note: to remove, delete or uninstall nvm - just remove ~/.nvm, ~/.npm and ~/.bower folders
通過 nvm 安裝任意版本的 node
$ nvm install 0.12.0
于是你就會看到一段非常快速進度條:
######################################################################## 100.0% Now using node v0.12.0
還可以直接安裝 iojs 各個版本
$ nvm install iojs
你可以繼續非常方便地安裝各個版本的 node 了, 你可以查看一下你當前已經安裝的版本:
$ nvm ls-remote nvm v0.8.26 v0.10.26 v0.11.16 -> v0.12.0
windows 環境
git clone nvmw
直接從 github clone nvmw 到本地, 這里假設大家都使用 d:\git
目錄存放 git 項目:
$ d: $ cd git $ git clone https://github.com/cnpm/nvmw.git
設置 d:\git\nvmw
目錄到你的 PATH
環境變量中:
set "PATH=d:\git\nvmw;%PATH%"
重新打開你的終端, 輸入 nvmw
$ nvmw Usage: nvmw help Show this message nvmw install [version] Download and install a [version] nvmw uninstall [version] Uninstall a [version] nvmw use [version] Modify PATH to use [version] nvmw ls List installed versions Example: nvmw install v0.6.0 Install a specific version number nvmw use v0.6.0 Use the specific version
通過 nvmw 安裝任意版本的 node
$ nvmw install 0.12.0
于是你就會看到一段非常快速進度條:
######################################################################## 100.0% Now using node v0.12.0
安裝 iojs
$ nvmw install iojs-1.4.2
然后你可以繼續非常方便地安裝各個版本的 node 了, 你可以查看一下你當前已經安裝的版本:
$ nvmw ls v0.10.26 v0.11.12 Current: v0.11.12
到此, 無論是 windows 環境, 還是 osx, linux 環境, 都能快速安裝多個版本的 node 了.
使用 cnpm 加速 npm
同理 nvm , npm 默認是從國外的源獲取和下載包信息, 不慢才奇怪. 可以通過簡單的 ---registry
參數, 使用國內的鏡像 http://registry.npm.taobao.org :
$ npm install koa --registry=http://registry.npm.taobao.org
于是屏幕又嘩啦嘩啦地一大片輸出:
$ npm install koa --registry=http://registry.npm.taobao.org ... koa@0.5.2 node_modules/koa ├── koa-compose@2.2.0 ├── statuses@1.0.2 ├── finished@1.1.1 ├── escape-html@1.0.1 ├── only@0.0.2 ├── debug@0.8.0 ├── fresh@0.2.2 ├── type-is@1.0.1 ├── delegates@0.0.3 ├── mime@1.2.11 ├── co@3.0.5 ├── accepts@1.0.1 (negotiator@0.4.2) └── cookies@0.4.0 (keygrip@1.0.0)
但是畢竟鏡像跟官方的 npm 源還是會有一個同步時間差異, 目前 cnpm 的默認同步時間間隔是 10 分鐘. 如果你是模塊發布者, 或者你想馬上同步一個模塊, 那么推薦你安裝 cnpm cli:
$ npm install cnpm -g --registry=http://registry.npm.taobao.org
通過 cnpm 命令行, 你可以快速同步任意模塊:
$ cnpm sync koa connect mocha
呃, 我就是不想安裝 cnpm cli 怎么辦? 哈哈, 早就想到你會這么懶了, 于是我們還有一個 web 頁面:
例如我想馬上同步 koa, 直接打開瀏覽器: http://npm.taobao.org/sync/koa
或者你是命令行控, 通過 open 命令打開:
$ open http://npm.taobao.org/sync/koa
如果你安裝的模塊依賴了 C++ 模塊, 需要編譯, 肯定會通過 node-gyp 來編譯, node-gyp 在第一次編譯的時候, 需要依賴 node 源代碼, 于是又會去 node dist 下載, 于是大家又會吐槽, 怎么 npm 安裝這么慢...
好吧, 于是又要提到 --disturl
參數, 通過中國鏡像來下載:
$ npm install microtime \ --registry=http://registry.npm.taobao.org \ --disturl=http://npm.taobao.org/mirrors/node
再次要提到 cnpm cli, 它已經默認將 --registry
和 --disturl
都配置好了, 誰用誰知道 . 寫到這里, 就更快疑惑那些不想安裝 cnpm cli 又吐槽 npm 慢的同學是基于什么考慮不在本地安裝一個 cnpm 呢?
github 好慢
好了, 看到這里大家應該對 node 和 npm 已經沒有速度慢的問題了.
github 慢, 或者說是它的資源 host 被堵而已, 大家可以通過簡單的 hosts 映射解決:
185.31.16.184 github.global.ssl.fastly.net
為何最近訪問國外網站這么慢?
聽說是 APCN2 又斷了: http://weibo.com/1415338244/ACTYkq8xK
有愛
希望文本對你有用. :)