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版本应该已经切换成功了
相关推荐
林瞅瞅27 分钟前
PowerShell 启动卡顿?内存飙升?原来是 800MB 的历史记录在作祟!
windows
Shepherd06191 小时前
【Windows Server 实战】WAC 反向代理配置
windows
云小逸1 小时前
【windows系统编程】第一章 Windows 系统核心架构与基础概念
windows·架构
怣疯knight3 小时前
Docker Desktop 4.55.0版本安装成功教程
windows·docker
liulilittle4 小时前
VEthernet 框架实现 tun2socks 的技术原理
网络·windows·c#·信息与通信·通信
独钓寒江雨5 小时前
win11在安全模式下删除360tray.exe
windows·电脑
PieroPc6 小时前
Windows 远程到 PVE 9.X Mac os (像window远程桌面)
windows·mac·远程桌面
吾心不朽6 小时前
PowerPoint无法从所选的文件中插入视频,验证此媒体格式所必需的64位编码解码器是否已安装,然后重试
windows
爱宇阳7 小时前
Windows 通过 SSH 下载服务器目录并完整上传到指定服务器目录(scp / rsync 实战教程)
服务器·windows·ssh
五阿哥永琪7 小时前
Stream流式编程 练习题
windows