Windows使用NodeJS版本管理工具fnm

1,645 阅读2分钟

Windows使用NodeJS版本管理工具fnm

一、fnm安装

打开 Powershell 控制台安装,使用 winget

winget install Schniz.fnm

目前fnm的最新版本是 v1.37.2,github 下载地址如下。

https://github.com/Schniz/fnm/releases

安装好fnm之后,打开控制台(Powershell),查看版本

fnm -V
# 或者  
fnm --version 
 
// fnm 1.37.2

二、fnm环境变量配置

此时运行命令fnm use你会发现报错了

error: We can't find the necessary environment variables to replace the Node version.
You should setup your shell profile to evaluate `fnm env`, see https://github.com/Schniz/fnm#shell-setup on how to do this
Check out our documentation for more information: https://fnm.vercel.app

大概意思就是无法找到所需的环境变量去替换 node 版本,解决方案如下:

Powershell 设置

1、在下面的目录新建profile.ps1文件

%USERPROFILE%\Documents\WindowsPowerShell\profile.ps1

提示:

%USERPROFILE%: 表示用户目录,直接在文件管理的地址栏输入 %USERPROFILE%,然后回车

WindowsPowerShell为新建的目录, 如果安装node后命令仍然无法识别,将文件夹名称改为PowerShell

2、将下面的代码写入到上面的配置文件里面

fnm env --use-on-cd | Out-String | Invoke-Expression
CMD 配置
  1. win+s 搜索 cmd
  2. 打开文件所在位置
  3. 对 “命令提示符” 右键,点击属性
  4. 修改 目标 输入框内值为下面的值
%windir%\system32\cmd.exe /k %USERPROFILE%\bashrc.cmd
  1. 再次进入用户目录 %USERPROFILE%,添加文件 bashrc.cmd
  2. 将下面的代码写入到上面的配置文件里面
@echo off
FOR /f "tokens=*" %%z IN ('fnm env --use-on-cd') DO CALL %%z
Git Bash 配置

进入用户目录 %USERPROFILE%,在git bash的配置文件 .bash_profile 添加下面的代码:

eval $(fnm env | sed 1d)
export PATH=$(cygpath $FNM_MULTISHELL_PATH):$PATH

if [[ -f .node-version || -f .nvmrc ]]; then
   fnm use
fi
VSCode终端配置

在配置文件settings.json里面添加如下代码:

"terminal.integrated.defaultProfile.windows": "Default Cmd",
"terminal.integrated.profiles.windows": {
  "Default Cmd":{
    "path": "C:\\Windows\\System32\\cmd.exe",
    "args": ["/k", "%USERPROFILE%\\bashrc.cmd"]
  }
}

提示:VSCode设置更改后需重启方可生效

项目Git Hook配置

如果在提交 git 时提示不能识别node,可以在 .husky 文件夹下的 commit-msgpre-commit 文件内添加以下命令:

eval "$(fnm env)"

三、fnm使用(常用命令)

fnm list-remote      			# 从列出所有远程Node.js版本 [aliases: ls-remote]
fnm list             			# 列出所有本地安装的Node.js版本 [aliases: ls]
fnm install <version>  			# 安装一个新的Node.js版本
fnm use <version>|<alias>       # 更改Node.js版本
fnm env             			# 打印并设置fnm所需的环境变量
fnm completions     			# 将shell完成打印到stdout
fnm alias <version> <alias>     # 设置node版本别名
fnm unalias <alias>         	# 删除别名定义
fnm default <version>   		# 将某个版本设置为默认版本
fnm current          			# 打印当前Node.js版本
fnm exec             			# 在fnm上下文中运行命令
fnm uninstall <version>  		# 卸载Node.js版本
fnm help             			# 帮助 [aliases: -h]
fnm -V							# 查看fnm版本[aliases: --version]

提示:打印当前node版本 node -v