NodeJS 环境配置

340 阅读3分钟

使用 fnm 管理 nodejs 版本

再使用 corepack 管理 pnpm 版本

再再使用 nrm 管理 npm 源

前置要求:

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

介绍

Fnm

项目地址:github.com/Schniz/fnm

一个管理nodejs版本的命令行工具。

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

(关键是这玩意比nvm快,在macos下启动命令行nvm初始化会卡一会)

Corepack

项目地址:github.com/nodejs/core…

Nodejs推出的管理 管理依赖包工具的命令行工具(即npm、pnpm、yarn的版本管理工具,无限套娃)

这个工具随node16+一起安装,但本质上和node没有强关联,只是顺便帮你下载安装了。

支持通过 package.json 的 packageManager 字段自动切换 管理依赖包工具

Nrm

项目地址:github.com/Pana/nrm

快速切换npm源的小工具

Windows系统

安装fnm

去github下载最新版的fnm: github.com/Schniz/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版本请根据自己的项目决定。

配置参考来源

blog.csdn.net/weixin_3939…