在用過 windows-nvm 和 volta 後,又發現了一個新的 node 版本管理工具,試用了一段時間後感覺是目前我所用過的最優秀的 Node 版本管理工具。
首先我想先說說為什麼放棄一些「好用」的 Node 版本管理工具,陳述一下存在的問題
Volta 的問題#
-
全局看不到東西
我用 antfu 的 taze 和 @antfu/ni 快速升級專案依賴,如果全局下有 pnpm 這個包 (能通過
npm list -g --depth 0
看見),我這樣配合一路回車就能快速升級依賴,但是 volta 在全局下不止 pnpm,yarn 也看不見,taze 就會提示我你可能沒有安裝 pnpm、yarn,是否全局安裝?就給我的一路回車這個行為中斷了,次數多了這個糟糕的中斷帶來的割裂感被無限放大 -
和 pnpm 的契合的不夠好
目前常用的三個軟體包管理器,npm、yarn、pnpm,在這三者中 pnpm 的體驗又是最好的,但 volta 對 pnpm 的支持目前只停留在「實驗性」支持,這個有些不盡人意
-
和一些 npm 庫檢查工具契合度糟糕
比如用於檢查專案依賴版本情況的npm-check-updates、用於自動調用包管理器命令的ni,這些好用的東西都對 volta 有過一些錯誤報告至今未解決 (錯誤報告、相關 issue)
-
緩慢的更新速度
雖然 GitHub 可以觀察到一直在提交,但上次更新 release 在 2023 年 1 月,也是這一點促使了我去尋找代替品
-
沒有卸載功能
使用 volta 將 18.18.0 升級到 18.19.0,他的行為就是再給你裝一個新的,如果你比較喜歡跟著版本更新,電腦裡將會有很多類似的版本 (你當然可以手動去目錄刪除,但是有些原始不是嗎)
nvm 的問題#
- nvm 並沒有 Windows 版本,Windows 上使用的叫做
nvm-windows
nvm-windows 的問題#
- 不支持根據專案自動切換 Node 版本,也就是說需要在切換專案的時候去使用命令手動切換 Node 版本,作者也表示不會在這個專案中提供支持,作者原話在這個鏈接中可以看到
- 雖然作者表示不會在這個專案中添加自動切換,但是還是說啟動了一個新的專案,用於改善這一問題,只是這一專案還未完成,更多信息可以在鏈接中看到https://github.com/coreybutler/nvm-windows/wiki/Runtime
pnpm 管理 Node 版本的問題#
-
pnpm 也是可以管理 Node 版本的,通過腳本安裝 pnpm
iwr https://get.pnpm.io/install.ps1 -useb | iex
,然後使用
pnpm env use --global 18
這樣管理 Node,但在使用了幾個小時後就放棄了,目前還是有挺多 bug 的,無法日常使用
本文主角 - nvm desktop
nvm desktop是一個以可視化界面操作方式管理多個 Node 版本的桌面應用,有以下優勢
- 自動根據專案切換 Node 版本,人工設置一次,後續無需干預,並不需要後臺運行著軟體
- 基於 electron,多端表現高度一致
- 引擎由nvmd-command提供,Rust 編寫
- 可視化操作更易於上手
- 保留了 nvm 命令行操作,只是將命令從
nvm xxx
改為了nvmd xxx
- 沒有那麼多水土不服的問題
基於以上優點,在多人的團隊協作中,這個 nvm desktop 是一個比較好的 Node 版本管理解決方案
軟體截圖#
列出所有可供使用的 Node 版本,支持換阿里源
管理已經安裝的 Node 版本
為專案指定 Node 版本,不指定的則為全局 Node 版本
客戶端下載鏈接#
https://github.com/1111mp/nvm-desktop/releases/latest
這個軟體並沒有什麼需要注意的,但是因為一些玄學問題,我建議你卸載乾淨電腦中的 Node、nvm、Volta 之類的軟體,重啟電腦後再安裝 nvm-desktop
如果你是從其他管理工具換過來的
建議檢查自己設備中的環境變量,一些工具卸載後依舊會殘留環境變量在個人設備中,可能出現預期之外的錯誤,建議進行清理 (比如裝過 Volta,再裝 npm-check-updates,你會因為這行代碼被告知禁止檢查全局)。