從 nvm 遷移到 Volta:讓 Node 版本跟著專案自動切換
做前端開發時,多個專案使用不同 Node.js 版本幾乎是常態。
例如有些舊專案還停留在 Node 14.x,有些專案依賴 Node 16.x,新專案又可能要求 Node 22+。如果每次進入專案都要手動切換版本,不僅麻煩,還很容易忘記。
我之前一直使用的是 nvm,它能解決多版本安裝的問題,但版本切換依賴手動執行命令。一旦進入專案後忘記切換 Node 版本,輕則安裝相依套件報錯,重則出現一些很難定位的建置問題。
所以這次我決定把本地 Node 版本管理從 nvm 遷移到 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 對 Node 的管理:
powershell 体验AI代码助手 代码解读复制代码nvm off
然後在 Windows 中解除安裝 NVM for Windows:
text 体验AI代码助手 代码解读复制代码Windows 設定 -> 應用程式 -> 已安裝的應用程式 -> NVM for Windows -> 解除安裝
解除安裝完成後,可以重新打開一個 PowerShell,確認 nvm 已經不可用。
powershell 体验AI代码助手 代码解读复制代码nvm version
如果命令不存在,說明 nvm 已經解除安裝完成。
在 PowerShell 中執行:
powershell 体验AI代码助手 代码解读复制代码winget install Volta.Volta
安裝完成後,重新打開終端機,讓環境變數生效。
可以透過下面的命令確認 Volta 是否安裝成功:
powershell 体验AI代码助手 代码解读复制代码volta --version
先安裝一個較新的 Node.js 版本作為全域預設版本。
例如我這裡使用的是:
powershell 体验AI代码助手 代码解读复制代码volta install [email protected]
安裝完成後,可以檢查目前預設版本:
powershell 体验AI代码助手 代码解读复制代码node -v
後續如果想修改預設 Node 版本,也繼續使用 volta install:
powershell 体验AI代码助手 代码解读复制代码volta install 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,核心流程其實很簡單:
nvm 中需要保留的 Node 版本NVM for WindowsVoltavolta install 設定預設 Node 版本volta pin 固定 Node 版本volta install 管理全域工具如果你也經常在多個前端專案之間切換,尤其是專案 Node 版本差異比較大,Volta 會比手動切換版本省心很多。
它不只是「安裝多個 Node 版本」,更重要的是把版本管理這件事從個人習慣變成專案設定。