前言
提到管理 Nodejs 版本,就不得不提到大名鼎鼎的 nvm 了,但是 nvm 有一个致命的缺点,就是它的自动切换版本极其麻烦,而 fnm 就没这个问题。并且 Windows 上的 nvm 与 macOS 上的 nvm 实际上并不是同一个,Windows 的只是借了 nvm 的名称,API略有不同,构建两者的语言更是完全不相同。而 fnm 在三大系统上都是同一个,这保证了 API 的一致性。
什么是 fnm
fnm 目前在 Github 上有 11.6k 的 star,是一个用 Rust 写的 Nodejs 版本管理工具。只需要在终端中简单的设置自动切换的脚本,并在项目中添加一个 .node-version
文件,就可以自动切换 Nodejs 版本了。
安装
macOS/Linux
1
| curl -fsSL https://fnm.vercel.app/install | bash
|
Windows
配置
在使用前还需要根据终端的不同,进行一些配置。以下是支持并推荐的终端
bash
在 bash 的配置文件 ~/.bashrc
中添加以下内容
1
| eval "$(fnm env --use-on-cd)"
|
在后续的使用发现,如果是 Windows 系统,在使用全局安装的包时,可能会出现 MODULE_NOT_FOUND
的错误,参考 Git Bash issues with CLI tools 的解决方案,继续在 ~/.bashrc
文件中添加以下内容
1
2
3
4
5
6
| eval $(fnm env | sed 1d)
export PATH=$(cygpath $FNM_MULTISHELL_PATH):$PATH
if [[ -f .node-version || -f .nvmrc ]]; then
fnm use
fi
|
zsh
在 zsh 的配置文件 ~/.zshrc
中添加以下内容
1
| eval "$(fnm env --use-on-cd)"
|
fish
创建一个 fish 的配置文件 ~/.config/fish/config.fish
,并添加以下内容
1
| fnm env --use-on-cd | source
|
powershell
将以下内容添加至 powershell 的配置文件 ~\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
或 $PROFILE
中
1
| fnm env --use-on-cd | Out-String | Invoke-Expression
|
使用
使用帮助
安装 18 与 16 版本
1
2
| fnm install 18
fnm install 16
|
指定 18 为默认版本
设置自动切换的目标版本
1
2
3
4
5
6
| # 检查当前版本
node --version
# 切换到 16 版本
fnm use v16.20.0
# 将当前版本保存到 .node-version 文件中
node --version > .node-version
|
当从其他目录切换到当前目录时,会自动切换到 16 版本,并输出 Using Node v16.20.0
。
至此,fnm 的安装与使用就完成了。