效能工具:執行 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.pswp.cn/web/45620.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/45620.shtml
英文地址,請注明出處:http://en.pswp.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…

極客筆記【收藏】

1. 鴻蒙調試命令&#xff08;adb&#xff09;&#xff1a; OH HDC命令使用指南|極客筆記 2. 添加selinux 權限 Android 根據AVC報錯添加Selinux 權限|極客筆記

【面試題】Golang 鎖的相關問題(第七篇)

目錄 1.Mutex 幾種狀態 1. 鎖定狀態&#xff08;Locked&#xff09; 2. 未鎖定狀態&#xff08;Unlocked&#xff09; 3. 喚醒狀態&#xff08;Woken&#xff09; 4. 饑餓狀態&#xff08;Starving&#xff09; 5. 等待者計數&#xff08;Waiters Count&#xff09; 總結…

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博客專家、人工智能領域優質創作者。喜歡通過博客創作的方式對所學的…

聊聊自動駕駛中的路徑和軌跡

在移動機器人領域&#xff0c;路徑&#xff08;Path&#xff09;和軌跡&#xff08;Trajectory&#xff09;是兩個緊密相關但又有所區別的概念。 路徑 是機器人從起點到終點的一系列點的序列&#xff0c;它只考慮了位置信息&#xff0c;而不考慮時間信息。路徑描述了機器人將要…

Java中常見的語法糖

文章目錄 概覽泛型增強for循環自動裝箱與拆箱字符串拼接枚舉類型可變參數內部類try-with-resourcesLambda表達式 概覽 語法糖是指編程語言中的一種語法結構&#xff0c;它們并不提供新的功能&#xff0c;而是為了讓代碼更易讀、更易寫而設計的。語法糖使得某些常見的編程模式或…

【Linux】Ubuntu 漏洞掃描與修復的吃癟經歷

自從上次“劫持”事情后&#xff0c;項目經理將所有跟安全相關的都推給我了&#xff08;不算 KPI 又要被白嫖&#xff0c;煩死了&#xff09;。這次客戶又提了一個服務器安全掃描和漏洞修復的“活”&#xff0c;我這邊順手將過程記錄一下&#xff0c;就當經驗總結跟各位分享一下…

centos7安裝配置maven

一、配置安裝環境 #安裝wget yum install -y wget #安裝jdk17 #創建jdk存放目錄 mkdir -p /usr/local/java #切換目錄 cd /usr/local/java #下載jdk17 wget https://download.java.net/java/GA/jdk17.0.1/2a2082e5a09d4267845be086888add4f/12/GPL/openjdk-17.0.1_linux-x64_b…

【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; 從而幫…

vscode OpenCV環境搭建

cmake 官網https://cmake.org/files/ 環境變量D:\Program Files\CMake\bin w64devkit 官網https://github.com/skeeto/w64devkit/tags 環境變量D:\Program Files\w64devkit\bin minGW32-make 拷貝并重命名為make OpenCV 在執行完后&#xff0c;把關于python的都給取消勾選…

mybatis-plus映射mysql的json類型的字段

一、對json里面內容建立實體類 Data AllArgsConstructor NoArgsConstructor public class RouteMetaEntity {private String title;private Boolean affix;private Boolean isAlwaysShow; }二、主類做映射 TableField(typeHandler JacksonTypeHandler.class)private RouteMe…

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;原因就出在最后一個參數“線程共享模…