15 - NVM - Node.js 版本管理工具

Node.js 版本间的差异使得有些专案需要使用特定的版本才能正常运作,因此各专案间需要来回的切换 Node.js 的版本。要切换 Node.js 版本意味着要重复做安装的动作,这样会使得切换版本浪费太多的时间。

管理 Node.js 的版本工具 - nvm

使用 nvm (全名: Node Version Manager)管理 Node.js 版本,让我们可以在系统中安装多个 Node.js 版本,藉由 CLI 任意地切换与安装各种版本的 Node.js ,以便匹配各式专案。

nvm 作为 Node.js 的版本管理工具,可以通过 CLI 指令快速的下载、安装与切换各个不同的版本,大幅减少转换版本所耗费的时间。

安装 nvm

使用 cURL 或 Wget 安装 nvm :

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

脚本的版本请使用最新的(目前是 v0.38.0 ) 可以到 nvm 的 GitHub 中取得最新版本号

安装脚本会将 nvm 的程序建立在 ~/.nvm 中,并会变更 profile 档案内容让 nvm 载入。

nvm 只支援 unix 、 macOS 与 windows WSL ,要在 Windows 上执行则要使用 nvm-windows

安装完成後,使用 nvm 指令即可执行。

使用 nvm

接着会介绍几个常用的 nvm 指令与在专案中指定 Node.js 版本的方式。

nvm 的各式指令

在安装 Node.js 前,先使用 nvm ls-remote 找寻所有 Node.js 的版本:

nvm ls-remote

如果只想要找 LTS (全名: Long Term Support )版本:

nvm ls-remote --lts

选定版本後进行安装:

nvm install v10.24.1

一般来说,我们不会需要指定到特定的版本,而且版本号也不利於记忆,因此 nvm 提供了 alias 功能:

nvm install node

Alias node 会指到最新的 Node.js 版本,因此上面的指令表示要安装最新的版本。

我们可以藉由 alias 指令设定自己的别名:

nvm alias project1 14.17.4

也可以使用 unalias 删除别名:

nvm unalias project1

每次开启 Shell 时, nvm 会抓取 alias 为 default 的版本,因此要改变预设的版本,可以修改 default alias :

nvm alias default 14.17.4

要切换 Node.js 版本时,可以使用:

nvm use 14.17.4

要浏览当前的状态,可以使用:

执行 nvm ls

> nvm ls
         v4.9.1
->     v14.17.4
         system
default -> stable (-> v14.17.4)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v14.17.4) (default)
stable -> 14.17 (-> v14.17.4) (default)
lts/* -> lts/fermium (-> v14.17.4)
lts/argon -> v4.9.1
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.4 (-> N/A)
lts/fermium -> v14.17.4

nvm ls 会显示已安装的版本、目前使用版本及各 alias 的资讯。

如果只要知道当前使用的 Node.js 版本:

nvm version

使用 .nvmrc 档案预设 Node.js 版本

nvm 提供使用者 .nvmrc 档案来配置专案预设的 Node.js 版本:

lts/*

.nvmrc 的内容为要使用的版本号或是 alias 。

当专案下有这个档案时,可以不用指定版本直接使用 nvm use 或是 nvm install , nvm 会依照 .nvmrc 的版本处理。

本文重点整理

  • Node.js 的版本差异大,更新速度快,因此专案间常常都会存在版本的差异,如果同时开发多个专案或是要更新专案时,这些安装流程都会浪费许多时间。
  • nvm 提供使用者以 CLI 指令控制与切换 Node.js 版本,在安装细节都处理掉的情况下,使用者可以很轻松的指定要使用的 Node.js 版本,将精力放於开发上。
  • nvm ls-remote 会搜寻线上所有的 Node.js 版本,如果只想找 LTS 版本的话,可以用 --lts 做过滤。
  • nvm install <version> 安装特定版本的 Node.js 。
  • nvm alias <alias> <version> 可以将特定版本设定别名,别名 default 为 nvm 预设会开启的版本,因此可以将期望的预设版本设为 default 别名。
  • nvm unalias <alias> 删除别名。
  • nvm use <alias/version> 使用特定别名/版本。
  • nvm ls 可以显示目前 Node.js 版本的安装与使用状态。
  • nvm version 当前使用的 Node.js 版本。
  • 在专案中建立 .nvmrc 的档案,在档案内设定特定的版本,在专案的目录下执行 nvm usenvm install 就会安装 .nvmrc 内所设定的版本。

参考资料


<<:  资料库练习

>>:  15. 做对事是不够的,你还必须要有影响力。

#4 - The Global Object &Function Expressions

今天来讲讲两个之後会用到的两个小观念: The Global Object &Function Ex...

部署model(serving) on seldon(PVC)

上一篇我们准备好部署model之前的环境, 做了下列事情 安装istio 安装seldon 准备pv...

Class

终於来到Class的章节了,Class是ES6所新增,在这之前都是使用Prototype去进行物件导...

Day 24:如何还原备份到 Github 另外一个分支的 Hexo 资料?

昨天我们尝试将 Hexo 备份到储存库另外一个分支,但如果哪一天真正需要使用这个备份还原本机环境怎麽...

DNS over TLS (DoT)

20201228 bind > 9.17.7 , dnsdist > 1.3.0 bin...