跨项目频繁切换node版本号(nvm-windows)

最近在手头有两个新老项目在同时处理,频繁切换node版本号很是繁琐,在这里记录一下解决的方法:(前提是系统已安装nvm)

下面部分是我的尝试思路,想要效果的话可以直接看第三点:

1. 使用项目特定的 .nvmrc 文件

use 18.17.0 手动切换node版本,而这个.nvmrc文件替代查询修改操作,配置有关操作:

.nvmrc 文件配置

再使用以下指令

bash 复制代码
nvm use # × 此指令windows会报错 需要替换成一下内容
nvm use $(Get-Content .nvmrc) 

nvm use 报错: A version argument is required but missing. nvm use语法不支持,查阅资料跟nvm版本与windows系统有关。

参考:blog.csdn.net/weixin_5257...

2. 系统配置指令

(原方案需切换 VS Code 终端为 Git Bash,实际测试后弃用,保留记录供参考)

官网地址:github.com/nvm-sh/nvm?... 官网提供脚本配置方案

利用git携带的Git Bash

bash 复制代码
notepad ~/.bashrc

首次打开可能会出现没有找到此文件是否创建,选择是。打开后将以下内容写入:

遇到问题:官网提供的指令会报错nvm_find_up:command not found,更换官网代码为以下内容:

bash 复制代码
# ~/.bashrc
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"

auto_nvm_use() {
    if [[ -f ".nvmrc" && -r ".nvmrc" ]]; then
        local nvm_version=$(<.nvmrc)
        echo "检测到 .nvmrc,切换 Node 版本: $nvm_version"
        nvm use "$nvm_version" 2>/dev/null || {
            echo "版本未安装,正在安装 $nvm_version..."
            nvm install "$nvm_version"
            nvm use "$nvm_version"
        }
    fi
}

# 替换 cd 命令
cd() {
    builtin cd "$@" || return
    auto_nvm_use
}

# 初始化时检测当前目录
auto_nvm_use

Git Bash切换到指定目录

打开VS Code终端发现并未生效,由于VS Code 的集成终端默认以 非登录 Shell(non-login shell) 启动,后未修改

3. vscode配置指令(最终解决办法)

项目根目录 下创建.nvmrc文件,写入版本号, 打开 VS Code 设置文件

  • 按下 Ctrl + , 打开设置,找到 settings.json 文件。
  • 找到 terminal.integrated.profiles.windowsPowerShell 新增以下内容
json 复制代码
  "args": [
      "-NoExit",
      "-Command",
      "if (Test-Path .nvmrc) { nvm use (Get-Content .nvmrc) }"
   ]            

OK!重启VS Code发现配置成功。

这是我的第一篇小笔记,有什么问题的话欢迎指正~

相关推荐
学以智用5 分钟前
Vue 3 组件完全指南
前端·vue.js
重庆穿山甲7 分钟前
Java开发者的大模型入门:AgentScope Java组件全攻略(一)
前端·后端
LawrenceLan11 分钟前
36.Flutter 零基础入门(三十六):StatefulWidget 与 setState 进阶 —— 动态页面必学
开发语言·前端·flutter·dart
ego.iblacat12 分钟前
Web 技术与 Nginx 网站环境部署
运维·前端·nginx
ricky_fan13 分钟前
(已解决)安装openclaw龙虾[特殊字符]npm权限问题EACCES
前端·npm·node.js
专业流量卡14 分钟前
让小龙虾给我写文章
前端
技术人生黄勇16 分钟前
微信接入|企业微信官方插件支持 OpenClaw 3步快速接入(实操版)
java·前端·人工智能·微信·企业微信
倔强的石头_18 分钟前
MySQL 兼容性深度解析:从内核级优化到“零修改”迁移工程实践
前端·数据库
小小小米粒18 分钟前
k8s流程创建清单
服务器·前端·etcd
Beginner x_u19 分钟前
Vue scoped 样式不生效的一个坑:CSS 选择器与 class 合并机制
前端·css·vue.js