NodeJS 环境配置

929 阅读3分钟

该配置实现自动识别并切换nodejs和包管理器版本。

前置要求:

  1. 电脑的目录中不能有中文,如果有请重装系统或重置系统。
  2. 安装好vscode
  3. 卸载之前安装的node

介绍

fnm

用于管理 nodejs 版本的命令行工具。

支持识别 package.json.engines 字段、 .node-version 文件或 .nvmrc 文件指定的 node 版本进行自动切换。

corepack

nodejs官方推出的包管理器(npm/pnpm/yarn/...)的管理工具。

该工具从 nodejs v14.19.0 和 16.9.0 开始内置安装。

支持通过 package.json.packageManager 字段自动切换包管理器版本

nrm

快速切换包管理器源的小工具

Windows系统

安装fnm

去 github 仓库中下载最新版本的 fnm(点我)。

下载 fnm-windows.zip,将压缩包解压到一个没有中文名称的路径下(如 D:\fnm)

image.png

添加环境变量

windows10: 我的电脑(鼠标右键) → 选择属性 → 高级系统设置 → 环境变量

Path环境变量添加fnm的目录

image.png

新建两个环境变量

image.png

安装Node

执行命令:

fnm install 20 # 默认安装长期支持(lts)版本
fnm use 20

让fnm支持Cmd命令行

在fnm目录下添加一个 fnm_init.cmd 文件,输入以下代码并保存:

@echo off
:: for /F will launch a new instance of cmd so we create a guard to prevent an infnite loop
if not defined FNM_AUTORUN_GUARD (
    set "FNM_AUTORUN_GUARD=AutorunGuard"
    FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd --resolve-engines --version-file-strategy=recursive --node-dist-mirror=https://npmmirror.com/mirrors/node/') DO CALL %%z
)

键盘在桌面按下 win+R,输入 regedit

找到 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor

右键新建字符串值,新值 #1那里填写AutoRun,保存之后双击AutoRun,数值数据填入:D:\fnm\fnm_init.cmd

image.png

打开Cmd输入 fnm --version 看看是否生效

image.png

自动切换Node版本

配置 PowerShell

打开 PowerShell 执行命令 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,然后输入 A(全是)

执行命令 notepad $profile

如果没有报错的话,会创建一个文件:C:\Users\<用户名>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

如果报错,则自行创建

用vscode打开这个文件,输入以下内容:

fnm env --use-on-cd --resolve-engines --version-file-strategy=recursive --node-dist-mirror=https://npmmirror.com/mirrors/node/ | Out-String | Invoke-Expression

回到 PowerShell 执行命令  $PROFILE  重载配置文件。

配置 Cmd 开启自动切换Nodejs版本

在 fnm_init.cmd 文件中已经配置好了,这里不再赘述

配置 GitBash 开启自动切换Nodejs版本

打开 GitBash 输入命令 echo $HOME

在回显的目录下创建 .bashrc 文件(如果有就不用创建)

用vscode打开,添加以下内容并保存:

eval "$(fnm env --use-on-cd --resolve-engines --version-file-strategy=recursive --node-dist-mirror=https://npmmirror.com/mirrors/node/)"

启用corepack

打开命令行执行命令 corepack enable

没有报错就没问题了

安装 pnpm

使用了corepack之后,只需要安装一个全局的pnpm即可

打开命令行执行命令 coreapack install -g pnpm@latest

切换npm源

执行命令:

pnpm install -g nrm   # 全局安装nrm命令行工具

nrm list   # 查看支持的源
nrm use taobao # 切换到淘宝源

Macos系统

安装fnm

执行命令 brew install fnm

开启自动切换Nodejs版本

执行命令 open ~/.zshrc

添加以下内容到文件中:

eval "`fnm env --use-on-cd --resolve-engines --version-file-strategy=recursive --node-dist-mirror=https://npmmirror.com/mirrors/node/`"

执行命令 source ~/.zshrc

安装Node

执行命令:

fnm install 20 # 默认安装长期支持(lts)版本
fnm use 20

启用corepack

与 windows 步骤一致

安装 pnpm

与 windows 步骤一致

实际应用

在 package.json 中添加以下内容即可实现打开命令行自动切换node版本和pnpm版本

{
    "packageManager": "pnpm@9.10.0",
    "scripts": {
        "preinstall": "npx -y only-allow pnpm",
    },
    "engines": {
        "node": ">=20.0.0",
    }
}

Tips: 实际的node版本和pnpm版本请根据自己的项目决定。

注意事项

corepack 与 pnpm 一起使用 的时候看你会出现语法报错,该问题出现在切换到一个新的 nodejs 版本的时候出现,解决方案为执行一次 corepack enable 即可。

配置参考来源

blog.csdn.net/weixin_3939…