巧克力
文章11
标签27
分类13

文章归档

使用fnm根据项目自动切换Node版本

使用fnm根据项目自动切换Node版本

页面施工中~

在日常的前端或 Node.js 项目开发中,我们经常会遇到需要在不同的 Node.js 版本之间切换的场景。手动管理这些版本既繁琐又容易出错。fnm (Fast Node Manager) 以其出色的性能和强大的功能,完美地解决了这个问题。

本文的核心,是讲解如何配置 fnm,使其能够像 Anaconda 管理 Python 环境一样,在你进入不同项目目录时,自动为你切换到该项目指定的 Node.js 版本。

前提:本文假设您已经成功安装了 fnm。如果您尚未安装,可以参考本站的《nvm迁移到fnm》一文。

核心:配置 Shell 以启用自动切换

要让 fnm 发挥最大的效用,关键一步是在你的 Shell 配置文件中,加入初始化命令并启用 use-on-cd 功能。这样,每次你打开终端或切换目录时,fnm 就能自动工作。

针对 Windows (PowerShell) 用户的详细指南

对于 Windows 用户,PowerShell 的执行策略可能会让配置过程稍显复杂。以下是详尽的步骤。

第 1 步:确保并打开你的 PowerShell 配置文件

PowerShell 的配置过程可以非常简洁。

  1. 打开一个 PowerShell 终端。
  2. 执行以下命令。它会自动检查配置文件是否存在,如果不存在,则会创建它:
    1
    if (-not (Test-Path $profile)) { New-Item $profile -Force }
  3. 然后,使用下面这条命令可以直接用默认程序(通常是记事本或 VS Code)打开这个配置文件,非常方便:
    1
    Invoke-Item $profile

第 2 步:添加 fnm 初始化命令

将下面这行命令完整地复制并粘贴到你刚刚打开的 Microsoft.PowerShell_profile.ps1 文件中。

1
2
3
# FNM (Fast Node Manager) 初始化
# 这行命令会设置 FNM 的环境变量,并启用 "cd" 自动切换 Node.js 版本的功能
fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression

随后保存并关闭文件。

第 3 步:激活配置并处理执行策略

  1. 重启 PowerShell 终端,这是最简单的激活方式。
  2. 问题排查:如果在重启后或执行 . $PROFILE 时,看到红色错误提示 ...无法加载文件...因为在此系统上禁止运行脚本,则需要调整 PowerShell 的执行策略。
  3. 解决方案:以 管理员身份 打开一个新的 PowerShell 终端,执行以下命令,然后按 Y 确认。
    1
    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    此命令仅为当前用户授权运行本地脚本,是相对安全的推荐设置。设置完成后,关闭管理员终端,回到普通终端,问题即可解决。

实战演练:体验自动切换

配置完成后,让我们来检验一下成果。

  1. 安装两个不同版本的 Node.js,并设置一个全局默认版本。

    1
    2
    3
    4
    fnm install 20
    fnm install 18
    fnm default 20 # 将 v20 设置为默认版本
    node -v # 此时应该显示 v20.x.x
  2. 进入项目根目录

  3. 在根目录中创建指定版本文件
    在项目根目录创建一个名为 .node-version 的文件,文件内容写入你希望使用的版本号
    例如:

    保存文件后,fnm 会立刻检测到并自动切换到 v18 版本。你也可以使用 .nvmrc 文件,效果完全相同。

  4. 验证
    现在保存进入项目,就会自动切换node版本了

  5. 离开项目目录fnm 会自动切回默认版本。

    1
    2
    cd ..
    node -v # 应该再次显示 v20.x.x

如果以上步骤都符合预期,那么恭喜你,你已经掌握了 fnm 最强大的工作流!

总结

fnm 以其出色的性能和强大的自动切换功能,成为了现代 Node.js 开发中一个不可或缺的工具。通过简单的配置,我们就可以实现“一项目一版本”的优雅工作流,极大地提升了开发效率和项目稳定性。如果你还在为管理多个 Node.js 版本而烦恼,不妨试试 fnm 吧!