DEV Community 👩‍💻👨‍💻

Cover image for 極簡 nvm 使用指南
Leon
Leon

Posted on • Originally published at editor.leonh.space

極簡 nvm 使用指南

nvmNode.js 的多版本管理器,當你的開發環境有多個不同時代的 Node.js 專案、橫跨不同版次的 Node.js 時,nvm 就派的上用場。

Node.js 的版本管理器不只有 nvm,由於 nvm 只支援 macOS 與 Linux,在 Windows 下,改用 NVS 是更好的選擇。(也可參閱另一篇〈在 Windows 建置以 Visual Studio 為基礎的 Python / Node.js 開發環境
nvm 的問題是,文件與說明又臭又長,其實 80% 的人只用的到 20% 的功能,所以這裡寫下個人常用到的功能與指令。

更新 nvm

更新 nvm 與從零安裝 nvm 是同一條命令:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
Enter fullscreen mode Exit fullscreen mode

這個安裝腳本會自行判斷是新裝還是更新。

要注意網址內有 nvm 的版號,更新 nvm 時要修改為最新的 nvm 版號。

更新 npm

npm 是 Node.js 的套件管理器,它也是需要更新的,nvm 有專門更新 npm 的指定:

nvm install-latest-npm
Enter fullscreen mode Exit fullscreen mode

列出系統內各 Node.js 版本

nvm ls
Enter fullscreen mode Exit fullscreen mode

以本人的環境為例,有列出下列版本:

       v14.18.1
->     v16.13.1
default -> 16.13.1 (-> v16.13.1)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v16.13.1) (default)
stable -> 16.13 (-> v16.13.1) (default)
lts/* -> lts/gallium (-> v16.13.1)
lts/argon -> v4.9.1 (-> N/A)
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.7 (-> N/A)
lts/fermium -> v14.18.1
lts/gallium -> v16.13.1
Enter fullscreen mode Exit fullscreen mode

看似很亂,其實大部份情況下只要關注那 default 的版號即可。

那些 defaultiojs 等等的是 alias,可以理解為標籤,default 標定的版號就是個人帳戶下預設的 Node.js 版號。

列出可安裝的 Node.js LTS 版本

nvm ls-remote --lts
Enter fullscreen mode Exit fullscreen mode

偶數的 LTS 版本們有著更長的維護期,建議都使用 LTS 版本,避免追著版號跑的窘境發生。

安裝 Node.js

安裝目前的 16.13.1 LTS 版,並且設為預設版次:

nvm install 16.13.1 --default
Enter fullscreen mode Exit fullscreen mode

建議都使用 LTS 版本,避免追著版號跑的窘境發生。

設定預設版本

同樣的以 16.13.1 LTS 版為例:

nvm alias default 16.13.1
Enter fullscreen mode Exit fullscreen mode

為專案指定 Node.js 版本

在專案的資料夾內,放一個 .nvmrc 檔案,在裡面寫下該專案的 Node.js 版號,例如某專案要用 16.13:

16.13

Enter fullscreen mode Exit fullscreen mode

進入該專案資料夾後,執行 nvm use 即會自動切換成 .nvmrc 指定的版本。

如果在安裝 nvm 時,有設定好與 shell 的整合的話,應該會自動幫我們做 nvm use 的動作。

Top comments (0)

Hey! Check out this week's Meme Monday post