如果你已经使用Node工作了一段时间,你很可能会发现你的项目--或者你正在工作的项目--是为旧版本的Node编写的。这意味着它们不能像预期的那样在最新版本中工作。
在这种情况下,Node版本管理器可以帮助你节省安装和在不同Node版本之间来回切换的宝贵时间。
今天我将向你介绍fnm (Fast Node Manager),这是一个Node版本管理器,用Rust编写,考虑到了简单性和速度。fnm ,也有跨平台支持。
内容列表
- 1 为Linux系统和
zshshell安装 - 2 常见的用法
fnm- 2.1 如何列出所有远程Node版本
- 2.2如何安装多个版本的Node
- 2.3如何为一个Node版本设置别名
- 2.4 如何使用特定版本的Node
- 2.5如何将一个Node版本附加到一个项目上
- 2.6如何卸载一个版本的Node
- 3 如何删除
fnm - 4 总结
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 ,通过使用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 版本,即使你在一个嵌套目录中,使用use或install子命令而没有版本。它还告诉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上给它一颗星。我认为它应该得到比现在更多的星星。
谢谢你的阅读!如果你想,你可以查看我的网站,并在Twitter和LinkedIn上关注我。
编码快乐 😄