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

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

  • 如何快速搭建 node 開發環境node

  • npm 超慢linux

  • github 沒法打開的問題git

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

快速搭建 Node.js 開發環境

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

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

osx, linux 環境

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

git clone nvm

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

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | NVM_DIR="/mnt/f/ubuntu/nvm" bash
git clone https://github.com/creationix/nvm.git /mnt/f/ubuntu/nvm && cd /mnt/f/ubuntu/nvm && git checkout 'git describe --abbrev=0 --tags'

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

vi /etc/profile
export NVM_DIR="/mnt/f/ubuntu/nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
source /etc/profile

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

$ nvmNode Version ManagerUsage:
    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 versionExample:
    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 shellNote:
    to remove, delete or uninstall nvm - just remove ~/.nvm, ~/.npm and ~/.bower folders

 

經過 nvm 安裝任意版本的 node

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

$ NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/dist nvm install 0.11.11

 

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

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

 

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

# nvmexport NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/distsource ~/git/nvm/nvm.sh

 

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

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

安裝 npm

curl -L https://www.npmjs.com/install.sh | sh

windows 環境

git clone nvmw

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

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

 

設置 d:\git\nvmw 目錄到你的 PATH 環境變量中:

set "PATH=d:\git\nvmw;%PATH%"

 

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

$ nvmwUsage:
  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 versionsExample:
  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=https://npm.taobao.org/mirrors/node"
$ nvmw install 0.11.11

 

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

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

 

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

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

$ nvmw ls

v0.10.26v0.11.12Current: v0.11.12

 

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

使用 cnpm 加速 npm

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

$ npm --registry=https://registry.npm.taobao.org install koa

 

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

$ npm --registry=https://registry.npm.taobao.org install koanpm http GET https://registry.npm.taobao.org/koanpm http 200 https://registry.npm.taobao.org/koa...npm http 200 https://registry.npm.taobao.org/negotiatornpm http 200 https://registry.npm.taobao.org/keygripkoa[@0](/user/0).5.2 node_modules/koa├── koa-compose[@2](/user/2).2.0├── statuses[@1](/user/1).0.2├── finished[@1](/user/1).1.1├── escape-html[@1](/user/1).0.1├── only[@0](/user/0).0.2├── debug[@0](/user/0).8.0├── fresh[@0](/user/0).2.2├── type-is[@1](/user/1).0.1├── delegates[@0](/user/0).0.3├── mime[@1](/user/1).2.11├── co[@3](/user/3).0.5├── accepts[@1](/user/1).0.1 (negotiator[@0](/user/0).4.2)└── cookies[@0](/user/0).4.0 (keygrip[@1](/user/1).0.0)

 

可是畢竟鏡像跟官方的 npm 源仍是會有一個同步時間差別, 目前 cnpm 的默認同步時間間隔是 15 分鐘. 若是你是模塊發佈者, 或者你想立刻同步一個模塊, 那麼推薦你安裝 cnpm cli:

$ npm install -g cnpm --registry=https://registry.npm.taobao.org

 

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

$ cnpm sync koa connect mocha

 

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

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

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

$ open https://npm.taobao.org/sync/koa

 

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

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

$ npm --registry=https://registry.npm.taobao.org --disturl=https://npm.taobao.org/dist 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 (APCN2 以修復好久)

相關文章
相關標籤/搜索