前言:我们在日常开发中经常会遇到这样的情况:我们手头有几个项目,每个项目都有不同的需求,不同的项目必须依赖不同版本的运行环境。 如果没有合适的工具,这个问题可能会非常困难。
nvm应运而生。 nvm是Mac下的节点管理工具。 它有点类似于管理Ruby的rvm。 如果需要管理节点,官方推荐使用nvmw或nvm-。 然而,nvm-并不是nvm的简单移植,它们也没有任何关联。 但下面介绍的所有命令都可以在nvm-中运行。
nvm和n的区别
另一个节点版本管理工具是TJ的n命令。 n命令作为node模块存在,而nvm是独立于node/npm的外部shell脚本,因此n命令比nvm受到更多限制。
由于npm安装的模块路径都是/usr/local/lib/,所以当使用n切换不同的node版本时,实际上会共享全局的node/npm目录。 因此不能很好地满足“根据不同的节点版本使用不同的全局节点模块”的需求。
卸载全局安装的node/npm
从官网下载的node安装包运行后会自动安装在目录下。 在使用过程中经常会遇到一些权限问题,因此建议按照以下方法卸载全局安装的node/npm。
首先,打开你,按shift++G,打开文件夹窗口,进入以下目录并删除节点及相关文件和文件夹:
您可能还需要在终端中输入一些其他命令:
sudo rm /usr/local/bin/npm
sudo rm /usr/local/share/man/man1/node.1
sudo rm /usr/local/lib/dtrace/node.d
sudo rm -rf ~/.npm
sudo rm -rf ~/.node-gyp
sudo rm /opt/local/bin/node
sudo rm /opt/local/include/node
sudo rm -rf /opt/local/lib/node_modules
安装
第一件也是最重要的一点是:一定要卸载已安装的,否则会发生冲突。 然后下载nvm-最新的安装包,直接安装。
OS X/Linux 安装
不同的是,我们不一定要先卸载原来的。 当然,我们建议最好先卸载它。 此外,你还需要一个C++编译器。 一般来说,您无需担心 Linux 发行版。 您可以直接使用构建套件。 对于 OS X,您可以使用 X-Code 命令行工具。 只需运行这个命令:
xcode-select --install
在 Linux 中:(如果发行版)
sudo apt-get install build-essential
然后我们可以使用
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
或者
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.33.0/install.sh | bash
远程下载.sh脚本并执行。 注意,版本号v0.33.0会随着项目的发展而变化。 通过官方最新安装命令始终检查最新安装的版本是有好处的。
安装多个版本的node/npm
例如,如果我们要安装4.2.2版本,我们可以使用以下命令:
nvm install 4.2.2
nvm 遵循语义版本命名规则。 例如,如果你想安装4.2系列的最新版本,你可以运行:
nvm install 4.2
nvm 将寻找 4.2.x 中的最高版本进行安装。
您可以使用以下命令列出远程服务器上的所有可用版本:
nvm ls-remote
换句话说,就是:
nvm ls available
版本之间切换
每当我们安装新版本的 Node 时,全局环境都会自动将此新版本设置为默认版本。
nvm 提供 nvm use 命令。 该命令的用法与命令类似。
例如切换到4.2.2:
nvm use 4.2.2
切换到最新的4.2.x:
nvm use 4.2
切换到iojs:
nvm use iojs-v3.2.0
切换到最新版本:
nvm use node
每次执行切换时,系统都会将该节点的可执行文件链接到该文件的特定版本。
我们还可以使用 nvm 为不同版本号设置别名:
nvm alias awesome-version 4.2.2
我们给版本号4.2.2起了个名字-,然后我们就可以运行:
nvm use awesome-version
以下命令可以取消别名:
nvm unalias awesome-version
此外,您可以设置此特殊别名:
nvm alias default node
列出已安装的实例
nvm ls
上面绿色箭头是当前使用的版本,下面列出了已经设置的别名。
在项目中使用不同版本的 Node
我们可以通过在项目目录中创建 .nvmrc 文件来指定要使用的 Node 版本。 然后在项目目录下执行nvm use。 .nvmrc 文件的内容只需要符合上面提到的语义版本控制规则。 还有一个名为 avn 的工具可以自动化此过程。
如何在多环境下使用npm?
每个版本的 Node 都附带不同版本的 npm。 您可以使用 npm -v 查看 npm 版本。 全局安装的 npm 包不会在不同的 Node 环境之间共享,因为这会导致兼容性问题。 分别放在不同版本的目录下,如~/.nvm//node//lib/。 这正好节省了我们在Linux中使用sudo的精力。 由于这是用户的主文件夹,因此不会导致权限问题。
但问题是,我们是否必须重新安装已经安装的npm包呢? 幸运的是,我们有办法解决我们的问题。 运行以下命令从特定版本的 Node 导入到我们将安装的新版本的 Node:
nvm install v5.0.0 --reinstall-packages-from=4.2
其他命令
直接运行特定版本的 Node
nvm run 4.2.2 --version
在当前终端的子进程中运行特定版本的 Node
nvm exec 4.2.2 node --version
确认某个版本Node的路径
nvm which 4.2.2
安装 Node 的其他实现,例如 iojs(基于 ES6 的 Node 实现,现已与 Node 合并)
nvm install iojs-v3.2.0
列出所有可以安装的节点版本号
nvm ls-:
快速命令: