使用 fnm 管理 nodejs 版本
再使用 corepack 管理 pnpm 版本
再再使用 nrm 管理 npm 源
前置要求:
- 电脑的目录中不能有中文,如果有请重装系统或重置系统。
- 安装好vscode
- 卸载之前安装的node
介绍
Fnm
一个管理nodejs版本的命令行工具。
支持通过 package.json中的 engines 字段、 .node-version 或者 .nvmrc 文件指定的node版本进行自动切换。
(关键是这玩意比nvm快,在macos下启动命令行nvm初始化会卡一会)
Corepack
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)
添加环境变量
windows10: 我的电脑(鼠标右键) → 选择属性 → 高级系统设置 → 环境变量
Path环境变量添加fnm的目录
再新建两个环境变量
安装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
打开Cmd输入 fnm --version
看看是否生效
自动切换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版本请根据自己的项目决定。