Times Before Volta

volta 問世之前我想管理 Node.js 版本的工具這個選項大概就是 nvm 了。不過 nvm 他是單純的管理 node 版本,而且他不會自動切換版本,你需要自己手動執行(也是可以寫 script 達成自動切換,只是這樣新電腦重新設定環境時比較麻煩)但這樣就太不懶人了,最好就是可以切換資料夾後他可以自己認得現在該用什麼,不過當時市面上沒有比較好的替代方案,所以也是只能將就的用下去。

Why You Need Volta

volta 其中一個好用的點在於你的專案 volta pin 了特定版本的 node 後,只要切換資換資料夾 node 版本也會順便幫你一起切換。

若切換到的專案底下所指明的 node 版本並未安裝的話, volta 會幫您安裝好在 package.json 鎖定的版本與相依的套件(node, npm, etc…)。這樣就不需要擔心下載下來的專案是否有包含你沒有安裝的工具,因為這些 volta 都會自動幫你處理好。

這樣做還有另外一個好處,若團隊都採用 volta 的話,就不需要擔心成員的環境是否跟你不一樣,因為 volta 會幫你處理好這一塊,讓你們使用的工具都維持在同一個版本。

Install Volta

官方有提供無腦安裝方式,不論是 Unix 還是 Windows 都很簡單。

在 Windows 上值得一提的是, volta 其實也可以用 scoop 裝起來!

執行:

1
scoop install volta

註:scoop 的安裝方式可以參考這裡

Developer Mode On Before Use It

在 Windows 環境上使用 volta 請記得先把開發者模式打開,主要是他會用到軟連結(symlink)。開啟方式可以參考官方說明

若忘記開啟的話,在安裝 tools 時就會拋出錯誤訊息。錯誤訊息會有類似以下的文字:

Could not create shared environment for package ‘xxxx’

Please ensure you have correct permissions to the Volta directory.

Error cause: A required privilege is not held by the client. (os error 1314)

詳情可以參考官方的這個Issue

How to Use It

官方的指南寫的還算滿簡潔的,實際上常用的指令真的不多,我個人最常用的也就只有 volta intallvolta pinvolta uninstallvolta list 需要記的不多就能用得很順,只是有些用法顯的讓人困惑。

因為 volta install node@{version} 這個指令會順便把這個版本的 node 設為預設版本,若想要把版本設定回來的話你需要做的是重新用 install 指令重設指定的 node 版本,看起來滿反直覺的也有人在 Issue 裡反應,不過提出來的解決方案就是再 volta install 一次重設 default 版本。

How to Uninstall Node

目前 volta 尚不支援移除 node/yarn 的操作,數年前有一個討論串雖然已經 closed 但裡面只提到暫解,其實也就是直接去資料夾底下砍掉相對應的檔案就好。有熱心人士寫了一個 python 的 lib 幫你完成這個動作,因為是 MIT 授權所以最好要先確認一下它在 windows 環境是否依然有作用,這個問題可以參考該 repo 的一個 PR

不過若是 node/yarn 以外的 tool 要移除的話(e.g. ugit, mermaid-cli, etc…)這點 volta uninstall 倒是支援的滿好。

Caution

目前 volta 這個專案還算是起步不久的階段(第一個正式版本也才在 2020/12/22 釋出),所以喜歡穩定的朋友可以先觀望,但我覺得這套工具算是 node 套件管理的大集成,該有的都有,也補足了多人開發時維持開發環境的一致性,相信是未來多人開發時的首選。

Reference