mcpField
F
fnm

fnm

官方
github.com开发者工具27.2kfnm2 天前更新
代码仓库访问官网

关于 fnm

fnm 是一个命令行工具,用于在同一台机器上管理多个 Node.js 版本。它可以安装最新 LTS 等版本,用一条命令切换当前版本,并列出本地已有的版本。fnm 以 Rust 编写,支持多个平台。

主要功能

  1. 01通过 fnm install --lts 安装最新的 LTS 版本
  2. 02通过 fnm use 24 切换当前 Node.js 版本
  3. 03通过 fnm list 查看已安装的版本
  4. 04可用 brew install fnm 经 Homebrew 安装
  5. 05作为可组合的命令行工具,便于接入 shell 脚本

适用场景

  1. 01运行构建前切换到项目要求的 Node.js 版本
  2. 02在多个 Node.js 版本上测试同一个软件包
  3. 03在新机器上搭建一致的 Node.js 环境
  4. 04让编码 Agent 在 shell 会话中切换 Node 版本

安装

选择你的系统或包管理器,复制命令到终端运行。

$
brew install fnm

安装完成后运行fnm --version确认安装成功。

命令示例

常用命令按使用顺序排列。

01
fnm install --lts
02
fnm use 24
03
fnm list

详细介绍

Fast Node Manager (fnm) 下载量 GitHub Actions 工作流状态

🚀 快速、简单的 Node.js 版本管理器,使用 Rust 构建

快如闪电!

功能

🌎 跨平台支持(macOS、Windows、Linux)

✨ 单文件,易于安装,启动迅速

🚀 专为速度而打造

📂 支持 .node-version 和 .nvmrc 文件

安装

使用脚本(macOS/Linux)

对于 bash、zsh 和 fish shell,我们提供了自动安装脚本。

首先确保操作系统上已安装 curl 和 unzip。然后执行:

curl -fsSL https://fnm.vercel.app/install | bash
升级

在 macOS 上,只需运行 brew upgrade fnm。

在其他操作系统上,升级 fnm 的方式与安装几乎相同。为避免在 shell 配置文件中重复添加内容,请在安装命令中传入 --skip-shell:

curl -fsSL https://fnm.vercel.app/install | bash -s -- --skip-shell
参数

--install-dir

设置 fnm 的自定义安装目录。默认值为 $XDG_DATA_HOME/fnm(如果未定义 $XDG_DATA_HOME,Linux 上会回退到 $HOME/.local/share/fnm,macOS 上则会回退到 $HOME/Library/Application Support/fnm)。

**注意:**在 macOS 上,只有使用 --force-install 时此选项才有意义,因为默认安装方式是 Homebrew。

--skip-shell

跳过根据当前用户的 shell(由 $SHELL 定义)将对应的加载器追加到 shell 配置文件中。例如,Bash 对应 $HOME/.bashrc,Zsh 对应 $HOME/.zshrc,Fish 对应 $HOME/.config/fish/conf.d/fnm.fish。

--force-install

macOS 上使用安装脚本进行安装的方式已弃用,建议改用 Homebrew formula;此选项会强制脚本仍使用该方式进行安装。

示例:

curl -fsSL https://fnm.vercel.app/install | bash -s -- --install-dir "./.fnm" --skip-shell
手动安装
使用 Homebrew(macOS/Linux)
brew install fnm

然后,为 fnm 设置 shell

使用 Winget(Windows)
winget install Schniz.fnm
使用 Scoop(Windows)
scoop install fnm

然后,为 fnm 设置 shell

使用 Chocolatey(Windows)
choco install fnm

然后,为 fnm 设置 shell

使用 Cargo(Linux/macOS/Windows)
cargo install fnm

然后,为 fnm 设置 shell

使用发布的二进制文件(Linux/macOS/Windows)
卸载

要移除 fnm(😢),只需删除主目录中的 .fnm 文件夹。你还应编辑 shell 配置,移除所有与 fnm 相关的内容(也就是阅读 Shell 设置,然后反向操作)。

补全

fnm 的二进制文件自带补全功能:

fnm completions --shell <SHELL>

<SHELL> 可以是以下受支持的 shell 之一:

  • bash
  • zsh
  • fish
  • powershell

请按照对应 shell 的说明进行安装。

Shell 设置

开始使用 fnm 之前,需要先设置环境变量。 具体做法是对 fnm env 的输出进行求值。

提示

建议显式指定 shell(例如 fnm env --shell bash),而不是依赖运行时推断 shell。这样速度稍快,也能避免检测进程树。

说明

请查看配置部分,启用强烈 推荐的功能,例如自动切换版本。

只需在项目中添加 .node-version 文件即可:

$ node --version
v14.18.3
$ node --version > .node-version

请查看以下适用于你所用 shell 的指南:

Bash

将以下内容添加到 .bashrc 配置文件中:

eval "$(fnm env --use-on-cd --shell bash)"
Zsh

将以下内容添加到 .zshrc 配置文件中:

eval "$(fnm env --use-on-cd --shell zsh)"
Fish shell

创建 ~/.config/fish/conf.d/fnm.fish,并在其中添加以下这一行:

fnm env --use-on-cd --shell fish | source
PowerShell

将以下内容添加到配置文件末尾:

fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression
  • 对于 macOS/Linux,配置文件位于 ~/.config/powershell/Microsoft.PowerShell_profile.ps1
  • 对于 Windows,位置可能是:
    • %userprofile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1,适用于 Powershell 5
    • %userprofile%\Documents\PowerShell\Microsoft.PowerShell_profile.ps1,适用于 Powershell 6+
  • 要创建配置文件,可以在 PowerShell 中运行:
    if (-not (Test-Path $profile)) { New-Item $profile -Force }
    
  • 要编辑配置文件,可以在 PowerShell 中运行:
    Invoke-Item $profile
    
Windows Command Prompt(又称 Batch、WinCMD)

fnm 也支持 Windows Command Prompt,但支持并不完整。你可以为 cmd.exe 或 Windows Terminal 设置启动脚本,并追加以下几行:

@echo off
:: for /F will launch a new instance of cmd so we create a guard to prevent an infnite loop
if not defined FNM_AUTORUN_GUARD (
    set "FNM_AUTORUN_GUARD=AutorunGuard"
    FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd') DO CALL %%z
)
在 Cmder 中使用

用法与常规 WinCMD 安装非常相似,只需进行一些调整,以便从 cmder 启动脚本中调用。此示例假设环境变量 CMDER_ROOT 已设置为 Cmder 安装的根目录。 然后你可以这样做:

  • 创建一个 .cmd 文件来调用它
:: %CMDER_ROOT%\bin\fnm_init.cmd
@echo off
FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd') DO CALL %%z
  • 将其添加到启动脚本中
:: %CMDER_ROOT%\config\user_profile.cmd
call "%CMDER_ROOT%\bin\fnm_init.cmd"

你也可以将 %CMDER_ROOT% 替换为其他方便的路径。

配置

查看可用的配置选项,了解更多配置文档

用法

查看可用命令,了解更多用法文档

贡献

欢迎提交 PR :tada:

开发:
# Install Rust
git clone https://github.com/Schniz/fnm.git
cd fnm/
cargo build
运行二进制文件:
cargo run -- --help # Will behave like `fnm --help`
运行测试:
cargo test

评论

支持 Markdown