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版本应该已经切换成功了
相关推荐
齐鲁大虾3 小时前
Windows 操作系统中 SQL Server 的版本要求
windows
不惑_3 小时前
Windows 安装 Docker 和 Docker Compose 完整教程
windows·docker·容器
猫头虎4 小时前
GoLand 2025.3 最新变化:值得更新吗?
ide·windows·macos·pycharm·编辑器·intellij-idea·idea
Filotimo_4 小时前
Spring Data JPA 方法名查询特性的使用
java·开发语言·windows
啊哈哈哈哈啊有4 小时前
导出树形结构,excel
java·windows·excel
charlie1145141915 小时前
如何把 Win32 窗口“置顶”(Windows + C++)
开发语言·c++·windows·笔记·学习·软件工程
李斯维6 小时前
MBR 和 GPT 区别
windows·嵌入式硬件·bootstrap·计算机外设
what_20186 小时前
wins磁盘重新分配
windows
Warren987 小时前
datagrip新建oracle连接教程
数据库·windows·云原生·oracle·容器·kubernetes·django