banner
Lainbo

Lainbo's Blog

If you’re nothing without the suit, then you shouldn't have it.
github

nvm-desktop的使用

在用過 windows-nvm 和 volta 後,又發現了一個新的 node 版本管理工具,試用了一段時間後感覺是目前我所用過的最優秀的 Node 版本管理工具。

首先我想先說說為什麼放棄一些「好用」的 Node 版本管理工具,陳述一下存在的問題

Volta 的問題#

  1. 全局看不到東西

    我用 antfu 的 taze 和 @antfu/ni 快速升級專案依賴,如果全局下有 pnpm 這個包 (能通過npm list -g --depth 0看見),我這樣配合一路回車就能快速升級依賴,但是 volta 在全局下不止 pnpm,yarn 也看不見,taze 就會提示我你可能沒有安裝 pnpm、yarn,是否全局安裝?就給我的一路回車這個行為中斷了,次數多了這個糟糕的中斷帶來的割裂感被無限放大

  2. 和 pnpm 的契合的不夠好

    目前常用的三個軟體包管理器,npm、yarn、pnpm,在這三者中 pnpm 的體驗又是最好的,但 volta 對 pnpm 的支持目前只停留在「實驗性」支持,這個有些不盡人意

  3. 和一些 npm 庫檢查工具契合度糟糕

    比如用於檢查專案依賴版本情況的npm-check-updates、用於自動調用包管理器命令的ni,這些好用的東西都對 volta 有過一些錯誤報告至今未解決 (錯誤報告相關 issue)

  4. 緩慢的更新速度

    雖然 GitHub 可以觀察到一直在提交,但上次更新 release 在 2023 年 1 月,也是這一點促使了我去尋找代替品

  5. 沒有卸載功能

    使用 volta 將 18.18.0 升級到 18.19.0,他的行為就是再給你裝一個新的,如果你比較喜歡跟著版本更新,電腦裡將會有很多類似的版本 (你當然可以手動去目錄刪除,但是有些原始不是嗎)

nvm 的問題#

  1. nvm 並沒有 Windows 版本,Windows 上使用的叫做nvm-windows

nvm-windows 的問題#

  1. 不支持根據專案自動切換 Node 版本,也就是說需要在切換專案的時候去使用命令手動切換 Node 版本,作者也表示不會在這個專案中提供支持,作者原話在這個鏈接中可以看到
  2. 雖然作者表示不會在這個專案中添加自動切換,但是還是說啟動了一個新的專案,用於改善這一問題,只是這一專案還未完成,更多信息可以在鏈接中看到https://github.com/coreybutler/nvm-windows/wiki/Runtime

pnpm 管理 Node 版本的問題#

  1. pnpm 也是可以管理 Node 版本的,通過腳本安裝 pnpm

    iwr https://get.pnpm.io/install.ps1 -useb | iex ,

    然後使用pnpm env use --global 18 這樣管理 Node,但在使用了幾個小時後就放棄了,目前還是有挺多 bug 的,無法日常使用

本文主角 - nvm desktop

nvm desktop是一個以可視化界面操作方式管理多個 Node 版本的桌面應用,有以下優勢

  1. 自動根據專案切換 Node 版本,人工設置一次,後續無需干預,並不需要後臺運行著軟體
  2. 基於 electron,多端表現高度一致
  3. 引擎由nvmd-command提供,Rust 編寫
  4. 可視化操作更易於上手
  5. 保留了 nvm 命令行操作,只是將命令從nvm xxx 改為了nvmd xxx
  6. 沒有那麼多水土不服的問題

基於以上優點,在多人的團隊協作中,這個 nvm desktop 是一個比較好的 Node 版本管理解決方案

軟體截圖#

列出所有可供使用的 Node 版本,支持換阿里源

image

管理已經安裝的 Node 版本

image

為專案指定 Node 版本,不指定的則為全局 Node 版本

image

客戶端下載鏈接#

https://github.com/1111mp/nvm-desktop/releases/latest

這個軟體並沒有什麼需要注意的,但是因為一些玄學問題,我建議你卸載乾淨電腦中的 Node、nvm、Volta 之類的軟體,重啟電腦後再安裝 nvm-desktop

如果你是從其他管理工具換過來的

建議檢查自己設備中的環境變量,一些工具卸載後依舊會殘留環境變量在個人設備中,可能出現預期之外的錯誤,建議進行清理 (比如裝過 Volta,再裝 npm-check-updates,你會因為這行代碼被告知禁止檢查全局)。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。