[go: up one dir, main page]

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)