如何使用fnm - 快速节点管理器

6,126 阅读6分钟

如果你已经使用Node工作了一段时间,你很可能会发现你的项目--或者你正在工作的项目--是为旧版本的Node编写的。这意味着它们不能像预期的那样在最新版本中工作。

在这种情况下,Node版本管理器可以帮助你节省安装和在不同Node版本之间来回切换的宝贵时间。

今天我将向你介绍fnm (Fast Node Manager),这是一个Node版本管理器,用Rust编写,考虑到了简单性和速度。fnm ,也有跨平台支持。

内容列表

1为Linux系统和zsh shell安装§

这里我将只介绍Linux系统和zsh shell的安装,fnm 。关于其他平台和shell的安装说明,请参见文档

首先确保curl 已经安装在你的系统上。然后运行以下程序来安装fnm

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

它将在你的$HOME/.fnm/ 目录中安装fnm

更新 fnm 与用上述命令再次安装它是一样的。

1.1环境变量设置§

还有一个重要的步骤。你必须设置环境变量。要做到这一点,在你的.zshrc 文件中加入以下内容。

# fnm
export PATH=/home/$USER/.fnm:$PATH
eval "$(fnm env --use-on-cd --version-file-strategy=recursive)"

1.2如何安装完成脚本§

fnm 在其二进制文件中包含了所有用于不同外壳的完成代码。你必须将该代码粘贴在一个名为 的文件中,该文件位于 环境变量指定的目录中。_fnm FPATH

fnm completions --shell zsh > <a_fpath_dir>/_fnm

参见echo $FPATH 的输出,以获得所有可能的目录,并用一个实际的目录替换<a_fpath_dir> 。建议使用一个用户本地路径。如果没有这样的路径,你可以通过添加这一行在你的.zshrc 中设置一个。

fpath=(/home/$USER/your/favorite/path/here $fpath)

2 fnm §的常见用法

2.1如何列出所有远程Node版本§

要查看所有你可以安装的不同Node版本,请运行。

fnm ls-remote

它将打印出所有的版本,如下所示。

.
.
.
v16.15.0 (Gallium)
v16.15.1 (Gallium)
v17.0.0
v17.0.1
v17.1.0
v17.2.0
v17.3.0
v17.3.1
v17.4.0
v17.5.0
v17.6.0
v17.7.0
v17.7.1
v17.7.2
v17.8.0
v17.9.0
v17.9.1
v18.0.0
v18.1.0
v18.2.0
v18.3.0

2.2如何安装多个版本的Node§

让我们安装版本为v18.3.0 的Node。

fnm install v18.3.0

对于安装最新LTS版本的Node,你可以使用--lts 选项。因此,运行以下程序也可以安装它。

fnm install --lts

fnm 也支持部分版本匹配。 ,从你的部分输入中猜测最新的可用版本。例如,如果你只是做。fnm

fnm install 17

它将安装版本为v17.9.1 的节点,这是最新的可用版本,从17 。因此,用上述命令进行实验。

让我们通过在终端输入node --version 来检查你的Node版本。注意,默认情况下使用的是第一个安装的版本。

在看到如何开始使用不同的Node安装版本之前,让我们看看如何为一个版本设置别名(名称),以便你可以方便地引用它。

2.3如何为一个Node版本设置别名§

默认情况下,你使用fnm 安装的第一个Node版本会收到default 的别名。

为一个版本设置别名的语法是。

fnm alias <version> <name>

如果你想设置别名default ,有一个速记方法。

fnm default <version>

你也可以为一个版本设置多个别名。

删除一个别名的语法是:。

fnm unalias <name>

2.4如何使用一个特定版本的Node§

你可以使用use 子命令来使用一个特定版本的Node。

fnm use 16

要检查当前的Node版本,只需运行。

fnm current

要列出你用fnm 安装的所有Node版本,请运行。

fnm ls

fnm-ls-1

注意,你可以绕过fnm ,通过使用system ,在你的系统上使用系统范围内的Node安装(如果有)。

fnm use system

2.5如何将Node版本附加到项目中§

你可以在你的项目根部创建一个 .node-version文件,并在该文件中写上该项目所需的Node版本,就像下面这样,将Node版本附加到项目中。

echo 'v18.3.0' > .node-version

fnm 尊重这个文件。因此,如果你在该目录中,你可以直接使用 或 来安装或使用该版本。fnm install fnm use

fnm 也尊重 文件(它类似于 文件,但来自于 土地)。因此,如果你先前使用了 ,你将顺利过渡到 。.nvmrc .node-version nvm nvm fnm

fnm 可以使用这些点文件来检测Node版本,甚至在使用 时自动开始使用,这在大多数情况下真的很方便,所以我已经在环境变量设置中启用了它们,在 命令中加入了以下标志。cd fnm env

  • --use-on-cd:这个标志告诉fnm ,当你cd 进入一个项目根目录时,它应该自动使用.node-version (或.nvmrc )中指定的版本的Node。很酷,不是吗?
  • **--version-file-strategy=recursive**:这个标志和它的recursive 值基本上告诉fnm 使用.node-version(或.nvmrc)中指定的 Node 版本,即使你在一个嵌套目录中,使用useinstall 子命令而没有版本。它还告诉fnm ,当你离开任何这样的项目目录并使用没有版本的use 子命令时,使用别名为default 的Node版本。与--use-on-cd 一起使用这个标志,可以让你在深入进出此类项目目录时,拥有自动使用或安装相关版本Node的魔力(如这里所述)。

如果这些功能干扰了你的工作流程,你可以在环境变量设置中随时删除这些标志,将它们关闭。

2.6如何卸载Node§的一个版本

卸载一个版本的node与安装它非常相似。你只需要使用子命令uninstall ,而不是install 。 就是这样。

3如何删除fnm §

删除fnm ,就像从你的home 中删除.fnm 目录和删除你在shell配置文件中添加的它的具体配置一样简单。记住也要删除完成脚本。

4总结§

下面是我们在本文中讨论的所有命令的总结。

# Listing all versions
fnm ls-remote

# Listing all installed ones
fnm ls

# Installing
fnm install <version>

# Uninstalling
fnm uninstall <version>

# Installing the latest LTS version
fnm install --lts

# Setting an alias
fnm alias <version> <name>

# Removing an alias
fnm unalias <name>

# Using a version
fnm use <version>

# Displaying the current version
fnm current

另外,如果你需要快速帮助,fnm 有内置的帮助,你可以在任何时候从你的终端获得帮助,如下所示。

  • fnm 命令的帮助。fnm --help
  • 任何子命令的帮助fnm <sub-command> --help

如果你喜欢fnm ,别忘了在GitHub上给它一颗星。我认为它应该得到比现在更多的星星。

谢谢你的阅读!如果你想,你可以查看我的网站,并在TwitterLinkedIn上关注我。

编码快乐 😄