前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >fnm 高阶版的nvm

fnm 高阶版的nvm

作者头像
前端柒八九
发布2023-12-14 19:09:52
5510
发布2023-12-14 19:09:52
举报

?Failure is an option,but fear is not ?

大家好,我是「柒八九」。一个「专注于前端开发技术/RustAI应用知识分享」Coder

前言

Node.js知道的哇,在前端开发中它具有举足轻重的地位。

可以说,没有Node.js的参与,那前端开发将寸步难行。如果你刚接触前端,那首要的事情就是在你本机上按照Node.js

通常会使用如下步骤:

  1. 首先,到Node.js 官网[1]并获取最新的LTS版本(20.10.0):
  1. 根据你的本地 OS 而采用不同的安装方式。
  1. 随着时间的推移,我们还需要手动检查是否有可用的更新。如果是这样,我们将需要卸载先前版本的 Node 并重新执行此过程。

如果采用上面的安装方式,「用时一时爽,遇到问题直接火葬场」

  1. Node.js不会通知用户何时有可用的更新,这意味着我们必须定期检查更新
  2. 此外,每次有更新时,我们都必须重新安装Node,这浪费时间和精力
  3. 最后,我们无法在一台计算机上安装「不同版本的 Node」。这在某些情况下是个问题,例如,某个项目依赖于Node v16,而另一个应用使用Node v18

其实,针对上面的问题,市面上是有解决方案的。一个比较成熟的方案就是使用nvm(Node Version Manager),它允许我们在单个机器上安装和管理多个Node.js版本。并且能够快速安装和卸载指定的Node

但是呢,nvm虽好,但是不够完美。

  • 下载Node版本,速度较慢
  • 无法跨平台,在window环境需要nvm-windows[2]库,并且这个库不受官方支持
  • ....

之前使用nvm是没得退路,但是现在我们有了更好的选择 - 那就是fnm(`Fast Node Manager`)[3]。

它能很好的解决nvm的各种弊端。

  • fnm 速度快,稳定性高 (基于Rust开发)
  • 跨平台 (其实最看重的是这个特性)
  • ....

所以,我们今天来聊聊fnm - 你的升级版的Node Version Manager

好了,天不早了,干点正事哇。

我们能所学到的知识点

?

  1. 安装 fnm
  2. 使用 fnm 管理 Node.js 版本
  3. 设置 Node.js 版本别名
  4. 卸载 fnm
  5. fnm 竞品 - volta

?


1. 安装 fnm

自动脚本

fnm团队打包了一个自动脚本,使下载软件变得非常简单。

在终端中输入以下命令:

代码语言:javascript
复制
curl -fsSL https://fnm.vercel.app/install | bash

但是呢,使用curl安装时,总是会出现网络错误。所以,我们还可以使用其他方式按照。只不过需要额外处理一些配置信息。

手动脚本

但是呢,这种手动安装,需要自己配置环境变量。

我们可以按照自己本地环境进行新增处理。使用vim处理也可以,使用IDE也可以。记住在修改后,使用source 来重新加载配置文件。

发布页下载压缩包

前往发布页面[4]并安装他们的二进制文件。

也是需要手动配置环境变量。

完成后,终端中输入以下命令验证是否安装成功。

代码语言:javascript
复制
fnm --help

应该返回这个结果:

这意味着我们的安装成功了!


2. 使用 fnm 管理 Node.js 版本

要下载和安装特定版本的Node.js,可以使用以下语法:

代码语言:javascript
复制
fnm install <version>

例如,这个命令在开发机器上安装了16.8.0

代码语言:javascript
复制
fnm install 16.8.0

如果我们想使用最新版本,只需使用--latest标志

代码语言:javascript
复制
$ fnm install --latest
Installing Node v21.4.0 (x64)

如果要安装lts版本,只需传递--lts参数:

代码语言:javascript
复制
$ fnm install --lts
Installing Node v20.10.0 (x64)

列出所有 Node.js 版本

下面的命令要求fnm列出所有可下载的 Node 版本:

代码语言:javascript
复制
fnm ls-remote

如果想查看系统上安装了哪些版本,可以使用下面的命令

代码语言:javascript
复制
fnm list

在我本地机器上按照了三个 Node.js 版本(16 /20/21)。

使用特定版本的 Node.js

要使用特定版本的 Node,我们必须运行 use 命令。

代码语言:javascript
复制
fnm use <version>

例如,如果我们想让我们的计算机切换到 Node 20.10.0

代码语言:javascript
复制
fnm use 20.10.0

我们可以用current命令验证我们是否已经更改了版本:

代码语言:javascript
复制
fnm current

这表明我们的机器现在运行的是 Node 版本 20.10.0

卸载 Node.js 版本

可以使用uninstall来卸载指定Node

代码语言:javascript
复制
fnm uninstall <version>

例如,如下命令将删除 Node 21.4.0:

代码语言:javascript
复制
fnm uninstall 21.4.0 #卸载最新版本的node

3. 设置 Node.js 版本别名

如果我们本地有很多项目,并且项目和项目之间的Node版本差异很大。此时,我们就可以借助alias来为特定版本的Node起一个「高端大气上档次」的名字了。

设置别名的语法:

代码语言:javascript
复制
fnm alias <version> <name>

例如,

代码语言:javascript
复制
fnm alias 20.10.0 A

上述命令给v20.10.0版本的Node给了一个A。这样在使用<version>的地方都可以用A来代替。

代码语言:javascript
复制
fnm use A 
fnm use 20.10.0

要验证我们的别名是否成功配置,我们可以重新运行fnm list


4. 卸载 fnm

在某些情况下,可能会遇到错误,例如开发过程中的命令问题。因此,我们可能不得不重新安装fnm工具来解决这个问题。

要清除 fnm,我们首先要找到其安装目录:

代码语言:javascript
复制
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 文件夹

代码语言:javascript
复制
rm -rf fnm #移除这个文件夹将卸载这个软件

5. fnm 竞品 - volta

volta[5]它不是管理多个版本的 Node.js,而是管理项目及其依赖项。当我们创建新项目时,volta 会自动检测所需的 Node.js 版本并为我们安装它。

volta 还支持其他工具,如 YarnRust,而不仅仅是 Node.js!这使它成为那些使用多种编程语言并需要单一工具管理它们的开发人员的理想选择。与 nvm 一样,volta 提供了一个命令行界面,用于在 Node.js 的不同版本之间切换。

要安装 volta,我们可以使用以下命令:

代码语言:javascript
复制
curl https://get.volta.sh | bash

这个命令下载并执行了安装 volta 的脚本。

如何使用特定版本的 NodeJS

安装所需版本:安装了 volta 后,我们可以使用它创建新项目并使用 volta install 命令设置所需的 Node.js 版本,以下命令创建了一个新项目,并将所需的 Node.js 版本设置为 16.0.0:

代码语言:javascript
复制
volta install node@16.0.0

在该项目的上下文中运行命令:此命令在项目的上下文中运行 app.js 文件,使用所需版本的 Node.js。

代码语言:javascript
复制
volta run node app.js

切换版本:我们还可以使用 Volta 在不同版本的 Node.js 之间切换。例如,要切换到 10.0.0 版本,我们可以使用以下命令:

代码语言:javascript
复制
volta pin node@10.0.0

使用别名:最后,以下命令将我们的环境切换到使用 Node.js 版本 16.0.0。我们也可以使用 nvm alias 命令设置 Node.js 的默认版本:

代码语言:javascript
复制
nvm alias default 16.0.0

volta 的一个潜在缺点是它仍然是一个相对较新的工具,因此可能不像 nvm 那样经过实战考验,而且社区支持有限,插件和集成较少。此外,volta 的设置比 nvm 需要更多步骤,如安装 shell shim 和修改我们的$PATH 环境变量。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-13,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 前端柒八九 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 我们能所学到的知识点
    • 1. 安装 fnm
      • 自动脚本
        • 手动脚本
          • 发布页下载压缩包
          • 2. 使用 fnm 管理 Node.js 版本
            • 列出所有 Node.js 版本
              • 使用特定版本的 Node.js
                • 卸载 Node.js 版本
                • 3. 设置 Node.js 版本别名
                • 4. 卸载 fnm
                • 5. fnm 竞品 - volta
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
                http://www.vxiaotou.com