告別手動切換 Node 版本:從 nvm 遷移到 Volta

從 nvm 遷移到 Volta:讓 Node 版本跟著專案自動切換

做前端開發時,多個專案使用不同 Node.js 版本幾乎是常態。

例如有些舊專案還停留在 Node 14.x,有些專案依賴 Node 16.x,新專案又可能要求 Node 22+。如果每次進入專案都要手動切換版本,不僅麻煩,還很容易忘記。

我之前一直使用的是 nvm,它能解決多版本安裝的問題,但版本切換依賴手動執行命令。一旦進入專案後忘記切換 Node 版本,輕則安裝相依套件報錯,重則出現一些很難定位的建置問題。

所以這次我決定把本地 Node 版本管理從 nvm 遷移到 Volta

為什麼選擇 Volta

Volta 也是一個 Node.js 版本管理工具,但它和 nvm 的使用體驗不太一樣。

它最大的特點是:可以把專案需要的 Node 版本寫進 package.json,之後只要進入專案目錄,Volta 就會自動使用專案指定的版本。

也就是說,遷移完成後,基本上不需要再記住「這個專案應該用哪個 Node 版本」,工具會替你處理。

遷移前準備

在解除安裝 nvm 之前,建議先查看目前已經安裝過哪些 Node 版本:

powershell 体验AI代码助手 代码解读复制代码nvm list

把仍然需要使用的版本記錄下來,例如:

text 体验AI代码助手 代码解读复制代码14.21.3
16.20.2
22.22.2

這些版本之後可以透過 Volta 重新安裝。

另外,解除安裝前最好關閉所有正在執行的 Node 相關程序,避免因為程序佔用導致解除安裝不完整。

解除安裝 nvm

先關閉 nvm 對 Node 的管理:

powershell 体验AI代码助手 代码解读复制代码nvm off

然後在 Windows 中解除安裝 NVM for Windows

text 体验AI代码助手 代码解读复制代码Windows 設定 -> 應用程式 -> 已安裝的應用程式 -> NVM for Windows -> 解除安裝

解除安裝完成後,可以重新打開一個 PowerShell,確認 nvm 已經不可用。

powershell 体验AI代码助手 代码解读复制代码nvm version

如果命令不存在,說明 nvm 已經解除安裝完成。

安裝 Volta

在 PowerShell 中執行:

powershell 体验AI代码助手 代码解读复制代码winget install Volta.Volta

安裝完成後,重新打開終端機,讓環境變數生效。

可以透過下面的命令確認 Volta 是否安裝成功:

powershell 体验AI代码助手 代码解读复制代码volta --version

設定預設 Node 版本

先安裝一個較新的 Node.js 版本作為全域預設版本。

例如我這裡使用的是:

powershell 体验AI代码助手 代码解读复制代码volta install [email protected]

安裝完成後,可以檢查目前預設版本:

powershell 体验AI代码助手 代码解读复制代码node -v

後續如果想修改預設 Node 版本,也繼續使用 volta install

powershell 体验AI代码助手 代码解读复制代码volta install node@新版本

需要注意的是,這裡的預設版本主要影響沒有單獨設定 Node 版本的目錄。

為專案指定 Node 版本

進入某個專案目錄,然後使用 volta pin 指定該專案需要的 Node 版本。

例如某個舊專案需要 Node 14:

powershell 体验AI代码助手 代码解读复制代码cd D:\project\old-app
volta pin [email protected]

執行完成後,專案的 package.json 中會自動新增一個 volta 欄位:

json 体验AI代码助手 代码解读复制代码{
  "volta": {
    "node": "14.21.3"
  }
}

之後只要在這個專案目錄中執行:

powershell 体验AI代码助手 代码解读复制代码node -v

Volta 就會自動使用專案指定的 Node 版本。

這也是我從 nvm 遷移到 Volta 的主要原因:版本跟專案綁定,而不是靠人腦記憶。

查看已安裝版本

可以使用下面的命令查看 Volta 目前管理的工具和版本:

powershell 体验AI代码助手 代码解读复制代码volta list all

如果某個專案 pin 了一個本機還沒有安裝過的 Node 版本,Volta 會在需要時自動處理對應版本。

全域套件怎麼安裝

遷移到 Volta 後,全域套件不建議再使用:

powershell 体验AI代码助手 代码解读复制代码npm install -g 套件名稱

更推薦使用:

powershell 体验AI代码助手 代码解读复制代码volta install 套件名稱

例如:

powershell 体验AI代码助手 代码解读复制代码volta install pnpm
volta install yarn

這樣安裝的全域工具會由 Volta 管理,行為更穩定,也不會被目前專案的 Node 版本影響。

如果想安裝指定版本:

powershell 体验AI代码助手 代码解读复制代码volta install 套件名稱@版本

例如:

powershell 体验AI代码助手 代码解读复制代码volta install [email protected]

專案內的套件管理器版本

專案內安裝相依套件時,仍然使用專案自己的套件管理工具,比如:

powershell 体验AI代码助手 代码解读复制代码npm install
yarn install
pnpm install

如果某個專案對套件管理器版本也有要求,可以同樣透過 volta pin 固定。

例如固定 Yarn 版本:

powershell 体验AI代码助手 代码解读复制代码volta pin [email protected]

執行後,package.json 中的 volta 欄位會變成類似這樣:

json 体验AI代码助手 代码解读复制代码{
  "volta": {
    "node": "14.21.3",
    "yarn": "1.22.22"
  }
}

這樣團隊成員拉取程式碼後,也能使用一致的 Node 和套件管理器版本。

遷移後的體驗

遷移完成後,我最明顯的感受是:不用再頻繁思考 Node 版本了。

以前進入專案後,第一反應是:

powershell 体验AI代码助手 代码解读复制代码nvm use 14.21.3

現在只需要進入專案目錄,Volta 會自動根據 package.json 中的配置切換版本。

對同時維護多個新舊專案的人來說,這個體驗提升還是很明顯的。

總結

這次從 nvm 遷移到 Volta,核心流程其實很簡單:

  1. 記錄原來 nvm 中需要保留的 Node 版本
  2. 解除安裝 NVM for Windows
  3. 安裝 Volta
  4. 使用 volta install 設定預設 Node 版本
  5. 在專案中使用 volta pin 固定 Node 版本
  6. 使用 volta install 管理全域工具

如果你也經常在多個前端專案之間切換,尤其是專案 Node 版本差異比較大,Volta 會比手動切換版本省心很多。

它不只是「安裝多個 Node 版本」,更重要的是把版本管理這件事從個人習慣變成專案設定。


原文出處:https://juejin.cn/post/7637354393595166730


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝16   💬10   ❤️1
497
🥈
alicec
📝1   ❤️2
66
🥉
我愛JS
💬1  
4
#5
Gigi
2
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登