快速搭建 Node.js 開發環境以及加速 npm

快速搭建 Node.js 開發環境以及加速 npm

在公交車上刷微博,仍是有不少同窗在諮詢:html

  • 如何快速搭建 node 開發環境
  • npm 超慢
  • github 沒法打開的問題

因而我以爲應該寫一篇文章解答全部這些起步問題,讓新同窗也能順順利利入門。node

快速搭建 Node.js 開發環境

若是你想長期作 node 開發, 或者想快速更新 node 版本, 或者想快速切換 node 版本,
那麼在非 Windows(如 osx, linux) 環境下, 請使用 nvm 來安裝你的 node 開發環境, 保持系統的乾淨.linux

若是你使用 Windows 作開發, 那麼你可使用 nvmw 來替代 nvmgit

osx, linux 環境

若是你是 windows 環境開發, 請跳過這裏, 直接查看下一章.github

git clone nvm

直接從 github clone nvm 到本地, 這裏假設你們都使用 ~/git 目錄存放 git 項目:web

$ cd ~/git
$ git clone https://github.com/creationix/nvm.git

配置終端啓動時自動執行 source ~/git/nvm/nvm.sh,
~/.bashrc, ~/.bash_profile, ~/.profile, 或者 ~/.zshrc 文件添加如下命令:shell

source ~/git/nvm/nvm.sh

從新打開你的終端, 輸入 nvmnpm

$ 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 默認是從 http://nodejs.org/dist/ 下載的, 國外服務器, 必然很慢,
好在 nvm 以及支持從鏡像服務器下載包, 因而咱們能夠方便地從七牛的 node dist 鏡像下載:windows

$ NVM_NODEJS_ORG_MIRROR=http://dist.u.qiniudn.com nvm install 0.11.11

因而你就會看到一段很是快速進度條:瀏覽器

######################################################################## 100.0%
Now using node v0.11.11

若是你不想每次都輸入環境變量 NVM_NODEJS_ORG_MIRROR, 那麼我建議你加入到 .bashrc 文件中:

# nvm
export NVM_NODEJS_ORG_MIRROR=http://dist.u.qiniudn.com
source ~/git/nvm/nvm.sh

而後你能夠繼續很是方便地安裝各個版本的 node 了, 你能夠查看一下你當前已經安裝的版本:

$ nvm ls
         nvm
     v0.8.26
    v0.10.26
    v0.11.11
->  v0.11.12

windows 環境

git clone nvmw

直接從 github clone nvmw 到本地, 這裏假設你們都使用 d:\git 目錄存放 git 項目:

$ d:
$ cd git
$ git clone https://github.com/hakobera/nvmw.git

在我提交的 pl#21 沒有合併以前, 是不會有鏡像功能的.
你們能夠從個人分支進行安裝:

$ git clone https://github.com/fengmk2/nvmw.git -b custom-mirror

設置 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 默認是從 http://nodejs.org/dist/ 下載的, 國外服務器, 必然很慢,
好在 nvmw 以及支持從鏡像服務器下載包, 因而咱們能夠方便地從七牛的 node dist 鏡像下載:

$ set "NVMW_NODEJS_ORG_MIRROR=http://dist.u.qiniudn.com"
$ nvmw install 0.11.11

因而你就會看到一段很是快速進度條:

######################################################################## 100.0%
Now using node v0.11.11

若是你不想每次都輸入環境變量 NVMW_NODEJS_ORG_MIRROR, 那麼我建議你在全局環境變量中增長它.

而後你能夠繼續很是方便地安裝各個版本的 node 了, 你能夠查看一下你當前已經安裝的版本:

$ nvmw ls

v0.10.26
v0.11.12
Current: v0.11.12

到此, 不管是 windows 環境, 仍是 osx, linux 環境, 都能快速安裝多個版本的 node 了.

使用 cnpm 加速 npm

同理 nvm , npm 默認是從國外的源獲取和下載包信息, 不慢才奇怪.
能夠經過簡單的 ---registry 參數, 使用國內的鏡像 http://r.cnpmjs.org :

$ npm --registry=http://r.cnpmjs.org install koa

因而屏幕又嘩啦嘩啦地一大片輸出:

$ npm --registry=http://r.cnpmjs.org install koa
npm http GET http://r.cnpmjs.org/koa
npm http 200 http://r.cnpmjs.org/koa
npm http GET http://r.cnpmjs.org/koa/download/koa-0.5.2.tgz
npm http 200 http://r.cnpmjs.org/koa/download/koa-0.5.2.tgz
npm http GET http://r.cnpmjs.org/escape-html
npm http GET http://r.cnpmjs.org/statuses
...
npm http 200 http://r.cnpmjs.org/negotiator
npm http 200 http://r.cnpmjs.org/keygrip
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 的默認同步時間間隔是 15 分鐘.
若是你是模塊發佈者, 或者你想立刻同步一個模塊, 那麼推薦你安裝 cnpm cli:

$ npm --registry=http://r.cnpmjs.org install cnpm -g

經過 cnpm 命令行, 你能夠快速同步任意模塊:

$ cnpm sync koa connect mocha

呃, 我就是不想安裝 cnpm cli 怎麼辦? 哈哈, 早就想到你會這麼懶了, 因而咱們還有一個 web 頁面:

例如我想立刻同步 koa, 直接打開瀏覽器: http://cnpmjs.org/sync/koa

或者你是命令行控, 經過 open 命令打開:

$ open http://cnpmjs.org/sync/koa

若是你安裝的模塊依賴了 C++ 模塊, 須要編譯, 確定會經過 node-gyp 來編譯,
node-gyp 在第一次編譯的時候, 須要依賴 node 源代碼, 因而又會去 node dist 下載,
因而你們又會吐槽, 怎麼 npm 安裝這麼慢...

好吧, 因而又要提到 --disturl 參數, 經過七牛的鏡像來下載:

$ npm --registry=http://r.cnpmjs.org --disturl=http://dist.u.qiniudn.com install microtime

再次要提到 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

1

有愛

但願文本對你有用. :)

相關文章
相關標籤/搜索