跳至主要內容
KOH NEWS

出版第 345 號

今日電稿

掘金開發者記錄棄用 nvm、jenv、pyenv:改以 Rust 單檔工具 sdkm 統一管理 40 多種開發工具

科技 通訊社體 刊登 (台北時間) 閱讀約 4 分鐘

掘金開發者2026年10月15日發文,記錄以Rust單檔工具sdkmate取代nvm、jenv、pyenv等四套版本管理器的重構過程與三檔作用域設計。

掘金用戶「unconditional」於 2026 年 10 月 15 日發布長文,記錄自己近兩個月淘汰既有版本管理器、改用 Rust 開源專案 sdkmate 的重構過程。文章標題直言「把 nvm、jenv、pyenv 全卸了」,內容以單一訊源的實作紀錄為主,本臺整理其中可核實的資訊輪廓。

原發文者列出卸載前並存的四套工具:nvm 管 node、jenv 管 java、pyenv 管 python、sdkman 管 maven 與 gradle。四套工具各有語法與目錄體系,切換版本前需先記住對應指令,例如 nvm use、jenv local、pyenv shell。

促使重構的三個情境

該文列舉三個具體問題。其一,nvm 每個版本為獨立目錄,npm 全域安裝的套件不跨版本共享,node 16 切到 20 後 pnpm、typescript 需重裝。其二,jenv 沒有 Windows 原生實作,原發文者一度以 WSL 代跑,結果 IDE 整合終端機的 PowerShell 與建構腳本所在的 WSL 兩邊各自維護 JAVA_HOME,出現 IDE 是 Java 21、終端機是 Java 8 的落差。其三,新同事入職時,.nvmrc 僅涵蓋 node 版本,其餘環境依賴 README 口頭約定,對齊耗時一整天。

原發文者將根因歸納為:版本管理按語言切分,而專案按業務聚合。此為其個人分析,非工具官方說法。

sdkmate 的輪廓

依據文章與其連結的 GitHub 倉庫(github.com/borenchan/sdkmate,Apache-2.0 授權),該專案以 Rust 撰寫,編譯產物為約 4MB 的單一執行檔,原生支援 Windows、macOS 與 Linux。命令名稱為 sdkm,定位為全端工程師的通用 SDK 管理器,內建 java、node、python、go、maven、bun、pnpm、deno、uv、claude-code、cmake、gh、helm、terraform 等 14 種工具可直接安裝,累計覆蓋 40 餘種。

上手流程為三步:下載解壓並放入 PATH、執行 sdkm init(Windows 需管理員終端機以寫入系統環境變數)、以 sdkm install java 21 安裝,版本號僅寫大版本時會自動匹配最新的 21.x。初始化會自動設定 PATH 並注入 shell hook,支援 bash、zsh、fish 與 PowerShell,PowerShell 會同時注入 PS7 與 PS5.1 兩個 profile。

三檔作用域與專案檔進 git

該文認為此工具的關鍵設計在於三檔作用域:switch 為全域預設、use 為專案級並寫入當前目錄的 .sdkm.toml、use 搭配 —shell 僅對當前終端機會話生效。專案級設定的行為是進目錄自動切換版本、離開自動還原,設定檔修改支援熱更新。

.sdkm.toml 可提交進 git,內容形如指定 java = “8”、node = “16”,使團隊版本對齊由檔案而非口頭約定承擔。原發文者的用法是全域掛最新版、舊專案釘舊版、試新版本開臨時會話。

本臺截至發稿僅取得該篇掘金文章與其連結的倉庫頁面,尚無法核實 40 餘種工具的完整清單、跨平臺安裝在非作者環境下的實際表現,以及專案的維護活躍度。上述內容均屬單一開發者的實作紀錄,採納前宜自行驗證。工具汰換類主題在本站先前整理的開發者棄用 VSCode 轉用 Zed 的討論串中亦有類似輪廓:個別工作流取捨,訊源多為單方經驗分享。

Wait, I made a typo: “SLAG:” should be “SLUG:”. Let me correct that in final output. Also remove the stray closing tag. Final answer below.

標籤

#開發工具#rust#掘金

回到即時新聞