效能工具:执行 npm start 可直接切换proxy代理UR后直接启动项目

1) 背景:

我们项目是2个前端3个后端的配置。前端和每个后端都有需要调试的接口。
因此经常切换vite.congig.js中的proxy后端代理链接,是挺麻烦的。

于是我研究如何能快速切换后端URL,所幸懒人有懒福,我找到了Inquirer 和 fs,
实现执行 npm start 可直接切换vite.config.js中proxy的代理URL,然后直接启动项目。

在这里插入图片描述

2) inquirer 和 fs npm包

先来说说Inquirer ,Inquirer是一个流行的 Node.js 库,用于构建交互式命令行界面。
fs是用于读取,写入,修改文件的工具。

简单介绍一下他的用法。
目前项目背景:vue: ^3.4.29 inquirer: ^10.0.1

// 需要定义,命令行可选范围
// name是展示在命令行
// value是选中name后可获得相对的value
const targetList = [{name: '张三',value: "\t\t\t\ttarget: 'http://33.33.33.33:3333',",},{name: '李四',value: "\t\t\t\ttarget: 'http://44.44.44.44:4444',",},{name: '王二',value: "\t\t\t\ttarget: 'http://22.22.22.22:2222',",},{name: '麻子',value: "\t\t\t\ttarget: 'http://55.55.55.55:5555',",},
]
// 调用inquirer方法,进行基础配置
const choose = inquirer.prompt([{type: 'list', // 用于提供一个列表选择。用户可以从列表中选择一个选项作为答案。name: 'serve', // 自取名message: '请选择开发环境下需要连接的后端服务', // 展示给用户的标题行choices: targetList, // 选取的列表值default: targetList[0].value // 进入命令行,默认选项}
])

3) 思路

  • 首先使用fs模块读取vite.config.js文件,找到target内容
  • 将我们在命令行选中的值 替换掉 刚刚找到target内容
  • 将替换成功的内容,重新写入vite.config.js文件
  • 在package.json 中npm start 修改命令

4) 完整代码如下:

// nodeTab.js
// Vue2中引入fs模块使用require,Vue3使用import
import fs from 'fs';
// inquirer这个库来创建交互式的命令行界面
import inquirer from 'inquirer';// 需要定义,命令行可选范围
// name是展示在命令函
// value用来替换proxy中代码
const targetList = [{name: '张三',value: "\t\t\t\ttarget: 'http://33.33.33.33:3333',",},{name: '李四',value: "\t\t\t\ttarget: 'http://44.44.44.44:4444',",},{name: '王二',value: "\t\t\t\ttarget: 'http://22.22.22.22:2222',",},{name: '麻子',value: "\t\t\t\ttarget: 'http://55.55.55.55:5555',",},
]
// 去找到target这一行代码
function findTarget(file) {let arr = file.split('\n')let targetStr = ''for (let i = 0; i < arr.length; i++) { // 通过循环找到对应行if (arr[i].includes('target:')) {targetStr = arr[i] // 赋值一下,找到了break}}return targetStr
}
// 选择方法
async function selectServe() {try {// 在命令行进行选择const choose = await inquirer.prompt([{type: 'list',name: 'serve',message: '请选择开发环境下需要连接的后端服务',choices: targetList,default: targetList[0].value}])// 读取了文件vite.config.js为string格式let file = fs.readFileSync('./vite.config.js', 'utf-8')// 找到target这一行let proxyTarget = findTarget(file)// 替换我们新选的后端服务地址const newFile = file.replace(proxyTarget, choose.serve)// 重新写入vite.config.jsfs.writeFileSync('./vite.config.js', newFile)} catch (error) {throw error}
}
selectServe()
// package.json
// 这里就展示部分代码,在start启动项目前,先执行node program/nodeTab.js这个脚本"scripts": {"test": "echo \"Error: no test specified\" && exit 1","dev": "vite  --mode development","build": "vite build --mode production","builds": "node program/ssh.js && vite build --mode production","start": "node program/nodeTab.js && vite --mode production","build:env": "vite build --mode development"},

如有不足,欢迎指正。

不要忽视你达成的每个小目标,它是你前进路上的垫脚石。冲!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

根据日志绘制障碍物轮廓点和中心点

绘制log中的障碍物凸包点&#xff0c;首先给出log日志中的障碍物的凸包点 [Info]-[PointCloudHandle:88]:[2024-07-14,09:55:41.052]-back obj size 6 [Info]-[PointCloudHandle:92]:[2024-07-14,09:55:41.052]-back obj size 6 cur idx 1 [Info]-[PointCloudHandle:93]:[2024…

STM32+TMC2209控制步进电机正反转。

STM32F103ZET6TMC2209控制步进电机正反转 1. 步进电机介绍2 驱动器TMC2209介绍2.1 引脚图及其功能2.2 细分介绍2.3 TMC控制驱动器接法 3 控制器介绍3.1 确定控制引脚3.2 UBEMX配置3.2.1 GPIO配置3.2.2 NVIC配置3.2.3 RCC配置3.2.4 SYS配置3.2.5 USRAT2配置&#xff08;PS:没用上…

单相电机或风扇接电容的具体接线方法示例

单相电机或风扇接电容的具体接线方法示例 如下图所示&#xff0c;单相电机引出3根绕组线&#xff08;不同品牌或型号的电机&#xff0c;引出线的颜色可能会有差异&#xff09;&#xff0c; 那么如何进行接线呢&#xff1f; 首先&#xff0c;跳过万用表测量主、副绕组的阻值…

Unable to obtain driver using Selenium Manager: Selenium Manager failed解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【Linux】Ubuntu 漏洞扫描与修复的吃瘪经历

自从上次“劫持”事情后&#xff0c;项目经理将所有跟安全相关的都推给我了&#xff08;不算 KPI 又要被白嫖&#xff0c;烦死了&#xff09;。这次客户又提了一个服务器安全扫描和漏洞修复的“活”&#xff0c;我这边顺手将过程记录一下&#xff0c;就当经验总结跟各位分享一下…

【Linux】多线程_7

文章目录 九、多线程8. POSIX信号量根据信号量环形队列的生产者消费者模型代码结果演示 未完待续 九、多线程 8. POSIX信号量 POSIX信号量和SystemV信号量作用相同&#xff0c;都是用于同步操作&#xff0c;达到无冲突的访问共享资源目的。 但POSIX可以用于线程间同步。 创建…

什么ISP?什么是IAP?

做单片机开发的工程师经常会听到两个词&#xff1a;ISP和IAP&#xff0c;但新手往往对这两个概念不是很清楚&#xff0c;今天就来和大家聊聊什么是ISP&#xff0c;什么是IAP&#xff1f; 一、ISP ISP的全称是&#xff1a;In System Programming&#xff0c;即在系统编程&…

如何申请抖音本地生活服务商?3种方式优劣势分析!

随着多家互联网大厂在本地生活板块的布局力度不断加大&#xff0c;以抖音为代表的头部互联网平台的本地生活服务商成为了创业赛道中的大热门&#xff0c;与抖音本地生活服务商怎么申请等相关的帖子&#xff0c;更是多次登顶创业者社群的话题榜单。 就目前的市场情况来看&#x…

Go语言--广播式并发聊天服务器

实现功能 每个客户端上线&#xff0c;服务端可以向其他客户端广播上线信息&#xff1b;发送的消息可以广播给其他在线的客户支持改名支持客户端主动退出支持通过who查找当前在线的用户超时退出 流程 变量 用户结构体 保存用户的管道&#xff0c;用户名以及网络地址信息 typ…

ARM功耗管理之功耗数据与功耗收益评估

安全之安全(security)博客目录导读 思考&#xff1a;功耗数据如何测试&#xff1f;功耗曲线&#xff1f;功耗收益评估&#xff1f; UPF的全称是Unified Power Format&#xff0c;其作用是把功耗设计意图&#xff08;power intent&#xff09;传递给EDA工具&#xff0c; 从而帮…

Codeforces Round 958 (Div. 2)补题

文章目录 A题 (拆分多集)B题(获得多数票)C题&#xff08;固定 OR 的递增序列&#xff09; A题 (拆分多集) 本题在赛时卡的时间比较久&#xff0c;把这题想复杂了&#xff0c;导致WA了两次。后来看明白之后就是将n每次转换成k-1个1&#xff0c;到最后分不出来k-1个1直接一次就能…

Hive的基本操作(查询)

1、基础查询 基本语法 select 字段列表|表达式|子查询 from 表(子查询|视图|临时表|普通表) where [not] 条件A and|or 条件B --先&#xff1a;面向原始行进行筛选 group by 字段A[,字段B,...] > 分组【去重处理】 having 聚合条件(非原始字段条件) --再&#x…

JMeter案例分享:通过数据验证的错误,说说CSV数据文件设置中的线程共享模式

前言 用过JMeter参数化的小伙伴&#xff0c;想必对CSV Data Set Config非常熟悉。大家平时更关注变量名称&#xff0c;是否忽略首行等参数&#xff0c;其余的一般都使用默认值。然而我最近遇到一个未按照我的预想读取数据的案例&#xff0c;原因就出在最后一个参数“线程共享模…

深度学习中激活函数的演变与应用:一个综述

摘要 本文全面回顾了深度学习中激活函数的发展历程,从早期的Sigmoid和Tanh函数,到广泛应用的ReLU系列,再到近期提出的Swish、Mish和GeLU等新型激活函数。深入分析了各类激活函数的数学表达、特点优势、局限性以及在典型模型中的应用情况。通过系统的对比分析,本文探讨了激…

详解MySQL中的递归查询

MySQL中的递归查询主要通过WITH RECURSIVE语句来实现&#xff0c;这在处理具有层级关系或树形结构的数据时非常有用。下面将通过一个具体的例子来详细解释如何在MySQL中使用递归查询。 示例场景 假设我们有一个部门表&#xff08;departments&#xff09;&#xff0c;其中包含…

老板新招的牛人,竟然用1天搭建了一套完整的仓库管理系统!

仓储管理系统是什么&#xff1f; 仓储管理系统&#xff08;WMS&#xff09;是一个全面的软件解决方案&#xff0c;旨在帮助企业优化仓库管理流程、管理和控制日常仓库运营。通过数学模型和信息手段&#xff0c;对仓库管理的各个环节进行优化和调控&#xff0c;涵盖了从货物入库…

使用网关和Spring Security进行认证和授权

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

怎么录制视频?电脑录制,试试这3种方法

在数字化快速发展的时代&#xff0c;视频已经成为我们传递信息、分享生活、表达情感的重要载体。每一个人都希望自己能够掌握视频录制技巧&#xff0c;轻松驾驭影像的力量&#xff0c;创造出属于自己的视觉盛宴。 那么&#xff0c;怎么录制视频呢&#xff1f;首先选择一款好用…

《信息与电脑(理论版)》是什么级别的期刊?是正规期刊吗?能评职称吗?

问题解答 问&#xff1a;《信息与电脑(理论版)》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《信息与电脑(理论版)》级别&#xff1f; 答&#xff1a;省级。主管单位&#xff1a;北京电子控股有限责任公司 主办…

实践致知第16享:设置Word中某一页横着的效果及操作

一、背景需求 小姑电话说&#xff1a;现在有个word文档,里面有个表格太长&#xff08;如下图所示&#xff09;&#xff0c;希望这一个设置成横的&#xff0c;其余页还是保持竖的&#xff01; 二、解决方案 1、将鼠标放置在该页的最前面闪烁&#xff0c;然后选择“页面”》“↘…