Failure is an option,but fear is not
大家好,我是柒八九 。一个专注于前端开发技术/Rust
及AI
应用知识分享 的Coder
。
前言
Node.js
知道的哇,在前端开发中它具有举足轻重的地位。
可以说,没有Node.js
的参与,那前端开发将寸步难行。如果你刚接触前端,那首要的事情就是在你本机上按照Node.js
。
通常会使用如下步骤:
-
首先,到Node.js 官网并获取最新的
LTS
版本(20.10.0
): -
根据你的本地 OS 而采用不同的安装方式。
-
随着时间的推移,我们还需要
手动检查
是否有可用的更新。如果是这样,我们将需要卸载先前版本的 Node 并重新执行此过程。
如果采用上面的安装方式,用时一时爽,遇到问题直接火葬场。
Node.js
不会通知用户何时有可用的更新,这意味着我们必须定期检查更新
- 此外,每次有更新时,我们都必须
重新安装
Node,这浪费时间和精力 - 最后,我们无法在一台计算机上安装不同版本的 Node 。这在某些情况下是个问题,例如,某个项目依赖于
Node v16
,而另一个应用使用Node v18
其实,针对上面的问题,市面上是有解决方案的。一个比较成熟的方案就是使用nvm
(Node Version Manager
),它允许我们在单个机器上安装和管理多个Node.js
版本。并且能够快速安装和卸载指定的Node
。
但是呢,nvm
虽好,但是不够完美。
- 下载
Node
版本,速度较慢 - 无法跨平台,在
window
环境需要nvm-windows库,并且这个库不受官方支持 - ....
之前使用nvm
是没得退路,但是现在我们有了更好的选择 - 那就是fnm(Fast Node Manager
)。
它能很好的解决nvm
的各种弊端。
fnm
速度快,稳定性高 (基于Rust
开发)- 跨平台 (其实最看重的是这个特性)
- ....
所以,我们今天来聊聊fnm
- 你的升级版的Node Version Manager
。
好了,天不早了,干点正事哇。
我们能所学到的知识点
- 安装 fnm
- 使用 fnm 管理 Node.js 版本
- 设置 Node.js 版本别名
- 卸载 fnm
- fnm 竞品 - volta
1. 安装 fnm
自动脚本
fnm
团队打包了一个自动脚本
,使下载软件变得非常简单。
在终端中输入以下命令:
shell
curl -fsSL https://fnm.vercel.app/install | bash
但是呢,使用curl
安装时,总是会出现网络错误。所以,我们还可以使用其他方式按照。只不过需要额外处理一些配置信息。
手动脚本
但是呢,这种手动安装,需要自己配置环境变量。
我们可以按照自己本地环境进行新增处理。使用vim
处理也可以,使用IDE
也可以。记住在修改后,使用source
来重新加载配置文件。
发布页下载压缩包
前往发布页面并安装他们的二进制文件。
也是需要手动配置环境变量。
完成后,终端中输入以下命令验证是否安装成功。
bash
fnm --help
应该返回这个结果:
这意味着我们的安装成功了!
2. 使用 fnm 管理 Node.js 版本
要下载和安装特定版本的Node.js
,可以使用以下语法:
bash
fnm install <version>
例如,这个命令在开发机器上安装了16.8.0
bash
fnm install 16.8.0
如果我们想使用最新版本,只需使用--latest
标志
bash
$ fnm install --latest
Installing Node v21.4.0 (x64)
如果要安装lts
版本,只需传递--lts
参数:
bash
$ fnm install --lts
Installing Node v20.10.0 (x64)
列出所有 Node.js 版本
下面的命令要求fnm
列出所有可下载的 Node 版本:
bash
fnm ls-remote
如果想查看系统上安装了哪些版本,可以使用下面的命令
bash
fnm list
在我本地机器上按照了三个 Node.js 版本(16 /20/21)。
使用特定版本的 Node.js
要使用特定版本的 Node,我们必须运行 use
命令。
bash
fnm use <version>
例如,如果我们想让我们的计算机切换到 Node 20.10.0
:
bash
fnm use 20.10.0
我们可以用current
命令验证我们是否已经更改了版本:
shell
fnm current
这表明我们的机器现在运行的是 Node 版本 20.10.0
。
卸载 Node.js 版本
可以使用uninstall
来卸载指定Node
xml
fnm uninstall <version>
例如,如下命令将删除 Node 21.4.0:
bash
fnm uninstall 21.4.0 #卸载最新版本的node
3. 设置 Node.js 版本别名
如果我们本地有很多项目,并且项目和项目之间的Node
版本差异很大。此时,我们就可以借助alias
来为特定版本的Node
起一个高端大气上档次的名字了。
设置别名的语法:
shell
fnm alias <version> <name>
例如,
shell
fnm alias 20.10.0 A
上述命令给v20.10.0
版本的Node
给了一个A
。这样在使用<version>
的地方都可以用A
来代替。
perl
fnm use A
fnm use 20.10.0
要验证我们的别名是否成功配置,我们可以重新运行fnm list
:
4. 卸载 fnm
在某些情况下,可能会遇到错误,例如开发过程中的命令问题。因此,我们可能不得不重新安装fnm
工具来解决这个问题。
要清除 fnm,我们首先要找到其安装目录:
ini
fnm env #获取所有环境变量
export PATH="/Users/XXX/Library/Caches/fnm_multishells/5801_1702468297944/bin":$PATH
export FNM_LOGLEVEL="info"
export FNM_MULTISHELL_PATH="/Users/XXX/Library/Caches/fnm_multishells/5801_1702468297944"
export FNM_NODE_DIST_MIRROR="https://nodejs.org/dist"
export FNM_DIR="/Users/XXX/Library/Application Support/fnm"
export FNM_COREPACK_ENABLED="false"
export FNM_ARCH="x64"
export FNM_VERSION_FILE_STRATEGY="local"
export FNM_RESOLVE_ENGINES="false"
rehash
这里,FNM_DIR
变量表示 fnm
的位置。接下来,进入路径并简单地移除 fnm 文件夹
shell
rm -rf fnm #移除这个文件夹将卸载这个软件
5. fnm 竞品 - volta
volta它不是管理多个版本的 Node.js
,而是管理项目
及其依赖项。当我们创建新项目时,volta
会自动检测所需的 Node.js
版本并为我们安装它。
volta
还支持其他工具,如 Yarn
和 Rust
,而不仅仅是 Node.js
!这使它成为那些使用多种编程语言并需要单一工具管理它们的开发人员的理想选择。与 nvm 一样,volta
提供了一个命令行界面,用于在 Node.js
的不同版本之间切换。
要安装 volta
,我们可以使用以下命令:
arduino
curl https://get.volta.sh | bash
这个命令下载并执行了安装 volta
的脚本。
如何使用特定版本的 NodeJS
-
安装所需版本:安装了 volta 后,我们可以使用它创建新项目并使用 volta install 命令设置所需的 Node.js 版本,以下命令创建了一个新项目,并将所需的 Node.js 版本设置为 16.0.0: volta install node@16.0.0
-
在该项目的上下文中运行命令:此命令在项目的上下文中运行 app.js 文件,使用所需版本的 Node.js。
arduinovolta run node app.js
-
切换版本:我们还可以使用 Volta 在不同版本的 Node.js 之间切换。例如,要切换到 10.0.0 版本,我们可以使用以下命令:
cssvolta pin node@10.0.0
-
使用别名:最后,以下命令将我们的环境切换到使用 Node.js 版本 16.0.0。我们也可以使用 nvm alias 命令设置 Node.js 的默认版本:
csharpnvm alias default 16.0.0
volta
的一个潜在缺点是它仍然是一个相对较新的工具,因此可能不像 nvm
那样经过实战考验,而且社区支持有限,插件和集成较少。此外,volta
的设置比 nvm
需要更多步骤,如安装 shell shim
和修改我们的$PATH
环境变量。
后记
分享是一种态度。
全文完,既然看到这里了,如果觉得不错,随手点个赞和"在看"吧。