精华 快速搭建 Node.js 开发环境以及加速 npm
发布于 3 年前 作者 fengmk2 107469 次浏览 最后一次编辑是 10 个月前 来自 分享

快速搭建 Node.js 开发环境以及加速 npm

在公交车上刷微博,还是有很多同学在咨询:

  • 如何快速搭建 node 开发环境
  • npm 超慢
  • github 无法打开的问题

于是我觉得应该写一篇文章解答所有这些起步问题,让新同学也能顺顺利利入门。

快速搭建 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/creationix/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 默认是从 http://nodejs.org/dist/ 下载的, 国外服务器, 必然很慢, 好在 nvm 以及支持从镜像服务器下载包, 于是我们可以方便地从七牛的 node dist 镜像下载:

$ NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node nvm install 4

于是你就会看到一段非常快速进度条:

######################################################################## 100.0%
Now using node v4.3.2

如果你不想每次都输入环境变量 NVM_NODEJS_ORG_MIRROR, 那么我建议你加入到 .bashrc 文件中:

# nvm
export NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node
source ~/git/nvm/nvm.sh

然后你可以继续非常方便地安装各个版本的 node 了, 你可以查看一下你当前已经安装的版本:

$ nvm ls
         nvm
     v0.8.26
    v0.10.26
    v0.11.11
->  v4.3.2

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

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

于是你就会看到一段非常快速进度条:

######################################################################## 100.0%
Now using node v4.3.2

如果你不想每次都输入环境变量 NVMW_NODEJS_ORG_MIRROR, 那么我建议你在全局环境变量中增加它.

然后你可以继续非常方便地安装各个版本的 node 了, 你可以查看一下你当前已经安装的版本:

$ nvmw ls

v0.10.26
v0.11.12
Current: v4.3.2

到此, 无论是 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 koa
npm http GET https://registry.npm.taobao.org/koa
npm http 200 https://registry.npm.taobao.org/koa
...
npm http 200 https://registry.npm.taobao.org/negotiator
npm http 200 https://registry.npm.taobao.org/keygrip
koa[@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 --registry=https://registry.npm.taobao.org install cnpm -g

通过 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/mirrors/node 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 以修复很久)

1

有爱

希望文本对你有用. :)

52 回复

支持并期待着

好早呀, 期待.

属于占坑的美文~

占坑, 广告联系我~ 嘿嘿

搞掂了, 干活去

cnpm 还支持 gzip …

哈哈, 都忘记写这个最重要的特性了

npm安装用代理也不错。

npm config set proxy=http://127.0.0.1:8087 npm config set registry=http://registry.npmjs.org

难怪github最近慢的死

支持,感谢。

@suqian $ cnpm install koa npm WARN install Refusing to install koa as a dependency of itself 求解决

厄, 我安装没问题啊

你在 koa 的项目文件夹下装 koa 是会报错的。。。它不是提示你了么

@dead-horse 原来 我就莫名其妙 这错误报的 已解决 谢谢

<script>alert(“xss”)</script>

<script>alert(“xss”)</script>//"

<a href=“javascript:eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34, 41))”>用户填写的超链接描述</a>

If you’re in China, maybe you should install it from our China mirror taobao npm:

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

安装了cnpm也无法install,楼主给瞧瞧

[root@localhost node-sl]# cnpm install mongoose
npm http GET http://r.cnpmjs.org/mongoose
npm http GET http://r.cnpmjs.org/mongoose
npm http GET http://r.cnpmjs.org/mongoose
npm http GET http://r.cnpmjs.org/mongoose/download/mongoose-3.8.8.tgz
npm ERR! fetch failed http://r.cnpmjs.org/mongoose/download/mongoose-3.8.8.tgz
npm http GET http://r.cnpmjs.org/mongoose/download/mongoose-3.8.8.tgz
npm ERR! fetch failed http://r.cnpmjs.org/mongoose/download/mongoose-3.8.8.tgz
npm http GET http://r.cnpmjs.org/mongoose/download/mongoose-3.8.8.tgz
npm ERR! fetch failed http://r.cnpmjs.org/mongoose/download/mongoose-3.8.8.tgz
npm ERR! network write ECONNRESET
npm ERR! network This is most likely not a problem with npm itself
npm ERR! network and is related to network connectivity.
npm ERR! network In most cases you are behind a proxy or have bad network settin
gs.
npm ERR! network
npm ERR! network If you are behind a proxy, please make sure that the
npm ERR! network 'proxy' config is set properly.  See: 'npm help config'

npm ERR! System Linux 2.6.32-431.11.2.el6.x86_64
npm ERR! command "node" "/usr/local/node/lib/node_modules/cnpm/node_modules/.bin
/npm" "--userconfig=/root/.cnpmrc" "--disturl=http://dist.cnpmjs.org" "--cache=/
root/.npm/.cache_cnpm" "--registry=http://r.cnpmjs.org" "install" "mongoose"
npm ERR! cwd /mnt/hgfs/linux_root/node-sl
npm ERR! node -v v0.10.26
npm ERR! npm -v 1.4.6
npm ERR! syscall write
npm ERR! code ECONNRESET
npm ERR! errno ECONNRESET
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /mnt/hgfs/linux_root/node-sl/npm-debug.log
npm ERR! not ok code 0

重试?

一直 --registry=http://r.cnpmjs.org npm config set registry=http://registry.npmjs.org

每次重开一个终端,总是回到原来安装过的版本呢

别用 n 了,用 nvm 吧

NVM_NODEJS_ORG_MIRROR=http://npm.taobao.org/mirrors/node nvm install node/latest

@fengmk2 我安装的时候到npm那一个步骤就出错了,是不是还要配置npm路径的环境变量,我看到装node的时候还是https,等到npm的时候又变成http了。这个怎么破? nvmw-npm.PNG

@fengmk2 改了get_npm.js里边的路径为 https还是不行(ps:这个富文本编译器 输入 _ n 就变成斜体字了)算不算个小bug。

C:\Users\Administrator>nvmw

Node Version Manager for Windows

Usage: nvmw help Show this message nvmw install [version] [arch] Download and install a [version] for [arch] architecture (optional) nvmw uninstall [version] Uninstall a [version] nvmw use [version] Modify PATH to use [version] nvmw ls List installed versions

Example: nvmw install v0.10.21 Install a specific version number of node.js nvmw use v0.10.21 Use the specific version nvmw install iojs Install the latest version of io.js nvmw install iojs-v1.0.2 Install a specific version number of io.js nvmw use iojs-v1.0.2 Use the specific version io.js

nvmw install v0.10.35 x86 Install a 32-bit version

C:\Users\Administrator>nvmw install 0.10.35 Start installing node/v0.10.35 (x64) to D:\git\nvmw\v0.10.35 输入错误: 没有文件扩展“.js”的脚本引擎。 Download D:\git\nvmw\v0.10.35\node.exe from https://npm.taobao.org/dist/v0.10.35 /x64/node.exe failed

C:\Users\Administrator>nvmw install 0.10.35 Start installing node/v0.10.35 (x64) to D:\git\nvmw\v0.10.35 输入错误: 没有文件扩展“.js”的脚本引擎。 Download D:\git\nvmw\v0.10.35\node.exe from https://npm.taobao.org/dist/v0.10.35 /x64/node.exe failed

mac 10.10.4 nvm ls-remote 返回的是 N/A,node 和 iojs 皆是。 已在.zshrc 中加了export NVM_NODEJS_ORG_MIRROR="https://nodejs.org/dist" 有遇到过的吗?

@cbsheng 看看 nvm 的版本,如果比较老,更新一下。另外,nvm 的返回时间是多久?如果比较久,可能网络堵塞导致的 N/A。 默认情况下,.zshrc 是不用做任何配置的。即使配置,配置成官方的源也没意思。

@alsotang 版本是0.23.0, 直接 clone 下来的。 没有返回时间耶,凭感觉大概是3-4秒。

怎么设置启动的默认node的

mark, 学校网速慢到我想哭了。。。

写得很好,简单明了。

好文呀, 果断收藏了

Windows 推荐使用 nvm-windowsnvmw 经测试不支持4.0以后的版本

为啥不用n,npm安装,操作又简单。

之前在国外npm install用得好顺畅,现在回到国内npm install用不了,用taobao.org的镜像也安装不了packages。 查/npm-debug.log也查不出问题来。ping registry.npm.taobao.org 会有package loss,大家是否会出现此情况呢?

@fengmk2 使用nvmw的时候报错了。 C:\Users\Administrator>nvmw install v4.4.3 Start installing node/v4.4.3 (x64) to e:\libs\nvmw\v4.4.3 Download from https://npm.taobao.org/mirrors/node/v4.4.3/x64/node.exe, and save it as e:\libs\nvmw\v4.4.3\node.exe 404 Not Found Download e:\libs\nvmw\v4.4.3\node.exe from https://npm.taobao.org/mirrors/node/v 4.4.3/x64/node.exe failed

C:\Users\Administrator>

然后我到https://npm.taobao.org/mirrors/node/v4.4.3/去看了下,目录名字应该是win-x64而不是x64。 应该是个bug。

@smallaitt 应该是nvmw的问题 很多PR 要修复这个问题但是没有被作者merge 而且作者修改了README说他再维护nvmw了。。

回到顶部