
fnm 快速上手一款用 Rust 寫的 Node.js 版本管理器3 分鐘配好自動切換【免費下載鏈接】fnm Fast and simple Node.js version manager, built in Rust項目地址: https://gitcode.com/gh_mirrors/fn/fnm同時維護幾個前端項目時你多半遇到過這種局面A 項目跑 Node 16B 項目必須用 20打開終端得先回憶各項目要哪個版本切完目錄又容易忘記重新切換。fnm 是一個用 Rust 編寫的 Node.js 版本管理器它能讀取項目目錄里的.node-version文件并自動完成切換讓你少跑一條命令。讀完本文你會裝好 fnm、配好 shell并了解三個省掉手動切換的進階配置。fnm 是什么3 個值得換過去的理由單文件二進制啟動即就緒fnm 不依賴任何 shell 腳本一條命令裝完就能用新打開 shell 時幾乎沒有額外開銷。如果你用過 nvm知道每次啟動 shell 都要加載一長串腳本fnm 的做法是把它壓縮成一個 Rust 二進制。兼容 nvm 的項目約定它識別.node-version和.nvmrc文件遷移不用改項目配置目錄里連這兩個文件都沒有時默認還會讀package.json的engines.node可用--resolve-enginesfalse關閉??缙脚_macOS、Windows、Linux 都支持bash、zsh、fish、PowerShell 均有對應的初始化方式。倉庫的 benchmarks/ 目錄里還附帶了基于 hyperfine 的對比腳本basic/fnm 對 basic/nvm覆蓋安裝 切換 驗證的完整流程方便你自行驗證。從安裝到第一次切換只需 3 步環(huán)境準備與安裝fnm 本身不需要 Node.js 環(huán)境選一個你順手的包管理器即可brew install fnm # macOS / Linux winget install Schniz.fnm # Windows cargo install fnm # 跨平臺需要 Rust 環(huán)境這些方式裝出來的都是同一個單文件二進制幾秒即可完成README 里還給了官方安裝腳本和 release 二進制兩種備選。shell 初始化fnm 通過fnm env輸出一段環(huán)境配置需要你的 shell 執(zhí)行它。把下面這行寫進~/.bashrczsh 用戶把--shell zsh并寫進~/.zshrceval $(fnm env --use-on-cd --shell bash)這里有兩個關鍵參數(shù)顯式傳--shell可以跳過運行時的 shell 推斷更快也更穩(wěn)--use-on-cd會注冊一個目錄變更鉤子你每次cd進項目時自動切換對應版本官方文檔將其列為強烈推薦建議一開始就加上。安裝并切換第一個版本fnm install 20 # 安裝最新的 Node 20.x fnm use 20 # 當前 shell 切換到 20.x node -v # 確認生效版本號支持部分匹配寫20會解析到已知的最新 20.x寫完整版本號或lts/iron這類 LTS 名稱也可以。fnm 常用命令速查8 條高頻操作命令作用備注fnm install 20安裝最新 Node 20.x接受18、20.10.0、lts/NAME等形式fnm install --lts安裝最新 LTS 版本等價于直接指定 LTSfnm use 20當前 shell 切換到 20.x未安裝時加--install-if-missingfnm use按當前目錄版本文件切換讀.node-version/.nvmrcfnm ls列出本地已安裝版本list的別名fnm ls-remote --lts查詢遠端 LTS 版本可加--filter 20做范圍過濾fnm default 20設置默認版本不帶參數(shù)運行時顯示當前默認fnm exec --using20 npm i用指定版本跑單條命令不改變當前 shell 狀態(tài)進階配置3 個讓你少動手的設置monorepo 里的遞歸版本查找默認情況下fnm use不帶參數(shù)時只查當前目錄local策略進子包目錄就會報找不到版本文件。把初始化行改成eval $(fnm env --use-on-cd --version-file-strategyrecursive --shell bash)配完后在repo/packages/my-package里執(zhí)行fnm use會向上找到倉庫根目錄的.node-version并切到那個版本子目錄工作不再需要單獨放版本文件。固定默認版本與版本別名新開 shell 沒有版本文件時走的就是默認版本再給常用版本起個名字輸入更短fnm default 20 # 默認版本設為 20.x fnm alias 20 work # 之后 fnm use work 即可切換別名用fnm unalias work刪除。團隊共享的版本名如legacy、stable起好后新人照抄就行。裝版本時順手啟用 Corepackfnm install --corepack-enabled --lts加上--corepack-enabled后每次新裝 Node 版本 fnm 都會替你執(zhí)行corepack enable省去手動開啟 pnpm/yarn 的一步。官方標注該功能為實驗性介意的話可以保持默認關閉。新手常見問題新終端不認 fnm 命令或 node 版本沒變大概率是fnm env那行沒寫進當前 shell 對應的配置文件bash 看.bashrczsh 看.zshrc確認寫對了重新開一個終端。fnm use不帶參數(shù)報 Cant find version in dotfile默認策略只查當前目錄按上文改成--version-file-strategyrecursive即可。fnm use 20提示版本不存在該版本還沒裝用fnm use 20 --install-if-missing一條命令裝好再切。相關資源完整命令參考docs/commands.md全部配置開關說明docs/configuration.md用--node-dist-mirror裝 nightly 版本docs/nightly.md延伸閱讀版本解析邏輯在 src/choose_version_for_user_input.rs版本文件讀取在 src/version_files.rs各 shell 的適配實現(xiàn)在 src/shell/把版本切換從每次都要想一步變成cd 進去就發(fā)生是 fnm 最核心的價值。現(xiàn)在只需做一件事打開你的 shell 配置文件把上面那一行eval寫進去重啟終端然后fnm install裝一個你手頭的版本試試?!久赓M下載鏈接】fnm Fast and simple Node.js version manager, built in Rust項目地址: https://gitcode.com/gh_mirrors/fn/fnm創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考