windows系统使用nvm配置自动切换node版本

当前端在开发久了之后,我们可能会有很多个项目存在,然而由于node版本的兼容性问题,我们不同的项目使用的node.js版本完全不同。

这个时候我们想到用nvm来做版本管理,但是发现每次都需要使用nvm use "node.js --version"来手动切换,有没有方法可以让nvm对于不同项目指定不同版本,并且自动切换。

我研究了一下午,找到了配置的方法,通过我们windows的powerShell,用其内置命令去配置执行策略,执行我们自定义的函数方法,让它自动实现切换版本

js 复制代码
// 首先,我们对于不同的项目,可以在powerShell中cd "项目路径",在项目的根路径中执行下面的命令
    echo "此项目指定的node版本" > .nvmrc
// 它会在我们的项目根目录下生成一个.nvmrc文件,其中存放了我们指定的node.js版本
js 复制代码
// 第二步:在powerShell中执行以下命令
    $PROFILE
// 为了防止不同用户电脑自定义配置不同而出现错误,执行这个命令找到windows读取配置的真实路径
// 输出结果类似   'D:\BaseInfoMove\文档\WindowsPowerShell\Microsoft.PowerShell_profile.ps1'

// 第三步:有点同学可能像我一样,因为自己改动的电脑配置导致读取位置不在默认C盘,因此需要创建目标目录文件
New-Item -Path "D:\BaseInfoMove\文档\WindowsPowerShell" -ItemType Directory -Force
// 执行这行脚本来创建目标文件,      注意:自己第二步输出的路径,不要硬抄,要用自己的(最后的文件名不要)

// 第四步:一次性创建并写入脚本,执行以下命令,一次性复制,如果有提示,直接确定即可

@"
# Auto-load .nvmrc on directory change
function Enter-Directory {
    `$currentDir = Get-Location
    `$nvmrcPath = "`$currentDir\.nvmrc"
    
    if (Test-Path `$nvmrcPath) {
        `$version = Get-Content `$nvmrcPath -First 1 | Where-Object { `$_ -match '^\d' }
        if (`$version) {
            Write-Host "🔄 Switching to Node.js `$version..." -ForegroundColor Cyan
            nvm use `$version --silent
        }
    }
}

`$lastDir = ""
Register-EngineEvent -SourceIdentifier PowerShell.OnIdle -Action {
    if (`$lastDir -ne (Get-Location).Path) {
        `$lastDir = (Get-Location).Path
        Enter-Directory
    }
} | Out-Null

# Run on startup
Enter-Directory
"@ | Set-Content -Path "$PROFILE" -Encoding UTF8

// 这段脚本会自动创建在第三步创建目标目录时省略的文件,并写入执行脚本


// 最后一步:设置执行策略
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
// 这一步是在更改我们windows的powerShell的执行策略,让它打开的时候自动执行我们的脚本,以监听目录变动,自动查询读取项目中的.nvmrc配置文件,切换指定node.js(有的话,没有指定不会切换,不会报错,勿忧)

以上步骤执行完之后,重启powerShell即可,cd进入项目目录,会有自定义提示

php 复制代码
🔄 Switching to Node.js `$version...
// 这是我们的脚本自定义提示,切换node版本提示,不必执行任何操作
// 提示出现后回车执行nvm current即可查看当前node版本,此时node版本应该已经切换成功了
相关推荐
非凡ghost2 小时前
ShareX(免费截图录屏软件)
windows·学习·软件需求
Eiceblue4 小时前
.NET框架下Windows、Linux、Mac环境C#打印PDF全指南
linux·windows·.net
skywalk81635 小时前
Windows 下常见的 开源输入法(IME)
windows·开源·输入法
yingdonglan5 小时前
鸿蒙跨端Flutter学习——GridView高级功能
linux·运维·windows
JAVA+C语言5 小时前
多主机 TCP 通信
网络·windows·tcp/ip
比奇堡鱼贩7 小时前
python第二次作业--函数
linux·运维·windows
小白郭莫搞科技10 小时前
鸿蒙跨端框架Flutter学习:ListView卡片样式详解
linux·服务器·windows
九皇叔叔10 小时前
【05】SpringBoot3 MybatisPlus 添加(Mapper)
windows
水饺编程10 小时前
第4章,[标签 Win32] :系统字体与字符大小
c语言·c++·windows·visual studio
i建模11 小时前
在Windows系统上通过SSH访问远程AWS主机
windows·ssh·aws