前言
在同時開發多個項目時,我們經常需要在各個項目中切換,而各個項目很可能使用不同的 Node.js 版本,如何維護多個 Node.js 版本以及在多個項目之間切換 Node.js 成為了一件麻煩的事情。
雖然目前市面上已經有了諸如 nvm、n 之類的版本管理工具,但是它們各有各自的問題。
nvm 是目前最流行的 Node.js 版本管理工具,但其不能跨平臺、運行緩慢的問題詬病已久,每次啟動 shell 時加載 nvm 都是一次漫長的煎熬。
n 作為一個使用 node 編寫的 Node.js 版本管理工具,自身便依賴于 Node.js ,這就牽扯出了經典的蛋生雞還是雞生蛋問題;再加上它經常需要使用 sudo 來執行,我們只能將它放棄。
fnm 的優勢
什么是 fnm 呢? 即 Fast Node Manager,從名字上就能感覺到它很快;沒錯,它的確非??欤?/p>
它的特點如下:
- 跨平臺運行,支持 Linux / Windows / macOS
- 使用 Rust 編寫,單文件即可運行,無需其他依賴
- 兼容 .node-version?和 .nvmrc 文件
安裝
一鍵安裝命令(Linux / macOS):
curl -fsSL https://fnm.vercel.app/install | bash
使用包管理器安裝:
# Linux / macOS
brew install fnm
# Windows
winget install Schniz.fnm
如果網絡環境受限,也可以手動下載安裝。從 Github Release 頁面下載對應系統和架構的二進制文件壓縮包,解壓后將二進制文件移動到自己放置工具的文件夾下,然后將對應路徑配置到環境變量的 Path 中,確保能在 shell 中執行 fnm 命令即可。
配置
安裝完 fnm 后,還需要配置 shell 來提供相關環境變量,以下是幾種不同 shell 的配置方式:
Bash
# 向用戶目錄下的 .bashrc 文件中追加以下內容
eval "$(fnm env --use-on-cd --shell bash)"
ZSH
# 向用戶目錄下的 .zshrc 文件中追加以下內容
eval "$(fnm env --use-on-cd --shell zsh)"
PowerShell
# 向 ~\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 文件中追加以下內容
# 如果文件不存在可以手動創建
fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression
使用
fnm 最常用的命令包含如下幾個
fnm list
# 該命令查看本地已安裝的所有 Node.js 版本,fnm list-remote 可以查看遠端一共有哪些 Node.js 版本可供安裝
fnm install 版本號
# 該命令安裝指定版本的 Node.js ,如 fnm install 18.2,也可以使用 fnm install --lts 來安裝最新的 lts 版本
fnm use 版本號
# 該命令切換當前 shell 所使用的 Node.js 版本,只在當前 shell 生效,對全局 Node.js 版本沒有影響
fnm default 版本號
# 該命令設置全局默認 Node.js 版本
fnm --help
# 該命令可查看 fnm 支持的所有命令
使用時可以在項目根目錄中新增 .node-version 或 .nvmrc 文件,并向其中寫入要使用的 Node.js 版本號;這樣當在 shell 中切換到對應項目根目錄時,fnm 會自動切換到文件中指定的 Node.js 版本,并在終端中提示當前運行的 Node.js 版本。