Node.js的正确安装与相关工具(Mac OS X)

版本分裂

nvm

node version manager: 版本管理工具,可以同时安装不同的 node 版本包括 io.js,并且随意切换相应的版本,甚至于特意使用某一版本的 node 来运行某个 js 文件。

nvm ls/ls-remote #列出已经安装的/远程仓库中的所有版本
nvm install/uninstall [version] #安装/卸载某个版本
nvm current #显示现在使用的版本,与node -v功能一样
nvm use [version] #切换版本
nvm which [version] #显示该版本所安装的位置
nvm alias default [version] #在所有的shell都使用这个默认版本

npm

node package manager: 包管理工具,安装和管理其他依赖库。

npm install -g [package] #全局安装(如mocha)
npm install [package] #安装到当前文件夹(如chai)
npm install #按照package.json安装相关依赖
npm install [package] --save #自动把模块和版本号添加到dependencies部分
npm install [package] --save--dev #自动把模块和版本号添加到devdependencies部分

用于区别开发依赖模块和产品依赖模块,devDepandencies 主要是配置测试框架, 例如 jshint、mocha。

坑:安装包

如果从官方网站直接下载安装包安装的话会有一个问题:我安装 io.js 之后,它会在 io.js 和 node 的目录之间直接建立软链接(symlinks),从而导致了 nvm 怎么也不能把 io.js 切换到原来 node.js 版本

$ ll /usr/local/bin/{node,io.js}
16864 -rwxrwxr-x. 1 root root 17268324 Jan 14 08:29 /usr/local/bin/iojs
    0 lrwxrwxrwx. 1 root root        4 Jan 14 08:29 /usr/local/bin/node -> iojs

Mac OS X 下如何正确安装 node

通过 brew 安装 nvm

先使用 brew 安装好 nvm(此时你还没有 node 呢,怎么npm install nvm -g):

brew update #更新软件源(就像sudo apt-get update)
brew install nvm

在安装完毕之后需要根据 terminal 里的提示做一下操作:

mkdir ~/.nvm #建立一个nvm版本库,之后安装的node版本都会在这里
cp $(brew --prefix nvm)/nvm-exec ~/.nvm/ #拷贝brew目录中的nvm-exec执行文件到新建的目录

然后把以下的内容添加到~/.bashrc~/.zshrc中,这样就可以在终端中使用 bash 和 zsh 命令行工具啦,不然会显示command not found

export NVM_DIR=~/.nvm
source $(brew --prefix nvm)/nvm.sh #实际上的目录是/usr/local/opt/nvm/nvm.sh

通过 nvm 安装 node

nvm install 0.12.3 #首先安装好想要的版本
nvm alias default 0.12.3 #然后设置默认的node版本以便于在所有shell中使用

通过npm config get prefix命令可以看到安装的路径是/Users/Thoughtworks/.nvm/versions/node/v0.12.3,所以 nvm 是直接把不同的 node 版本安装在先前所建立的.nvm 文件夹中,易于管理。

通过 npm 安装依赖库

npm install -g npm@latest #首先更新一下npm到最新版

最好不要使用 sudo 安装全局库,所以需要更改一下 npm 工具的权限,就不用每次都需要输入密码啦

sudo chown -R $USER ~/.npm

切换软件源

由于墙的问题,有时候 npm install 会在 node-gyp rebuild 那里卡很久,原因在于 node-gyp 编译时候需要 Node.js 源码来提供头文件,所以它会先尝试下载 Node.js,但是由于下载速度奇慢所以就卡住不动了。

为了获得更快的库安装速度,我们可以切换到淘宝的软件源,淘宝说与官方的同步频率为 10 分钟,所以还是相当可靠的。

可以使用我们定制的 cnpm 命令行工具代替默认的 npm:

npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install [package] #使用cnpm来安装对应的库

参考资料