Vue工程打包后重新修改BaseUrl(Revise BaseUrl after Vue project packaging)

在实际工程中遇到一种情况,需要在打包后修改app的名称即BaseUrl。所以写了一个脚本进行实现。

本来打包时设置的BaseUrl=apps001,访问时的路径为http://ip:port/apps001
现在需要把路由地址修改为apps002,也就是在访问的时候访问http://ip:port/apps002。为实现这个目标特此编写该脚本。

The original ‘BaseUrl=apps001’ was set during packaging, and the path for accessing it ishttp://ip:port/apps001.
Now we need to modify the routing address to ‘apps002’, which means accessing it during accesshttp://ip:port/apps002. To achieve this goal, this script is hereby written.

具体代码如下:

const fs = require("fs");
const path = require("path");
const folderName = path.resolve("dist");
const ignoreFlag = "// -- RENAME IGNORE FLAGS --";
let oldAppName;
let newAppName;
function distForderExists(path) {try {if (!fs.existsSync(path)) {return false;} else {console.log(`  ···${folderName} folder exists`);return true;}} catch (err) {console.error(err);return false;}
}
function replaceInFile(filePath) {let data = fs.readFileSync(filePath, { encoding: "utf8" });if (data.indexOf(ignoreFlag) > -1) {// console.log(`  ··· File ${filePath} was ignored ···`);process.stdout.write(`  ··· File ${filePath} was ignored ··· \r`);return;}var result = data.replace(oldAppName, newAppName);fs.writeFileSync(filePath, result);// console.log(`  ··· File ${filePath} replace end ···`);process.stdout.write(`  ··· File ${filePath} replace end ·· \r`);
}
/*** Find all files inside a dir, recursively.* @function getAllFiles* @param  {string} dir Dir path string.* @return {string[]} Array with all file names that are inside the directory.*/
const getAllFiles = (dir) =>fs.readdirSync(dir).reduce((files, file) => {const name = path.join(dir, file);const isDirectory = fs.statSync(name).isDirectory();return isDirectory ? [...files, ...getAllFiles(name)] : [...files, name];}, []);
function replaceInDirectory(dirPath) {const extNames = [".js", ".html", ".css"];console.log(`  ···Replacing dir: ${dirPath}`);const files = getAllFiles(dirPath);for (let index = 0; index < files.length; index++) {const file = files[index];if (extNames.indexOf(path.extname(file)) === -1) continue;process.stdout.write(`  ···Replacing ${file} \r`);replaceInFile(file);}
}
// //
console.log("··· Rename start ···");
console.log(process.argv);
if (!distForderExists(folderName)) return false;
if (process.argv.length !== 4) {console.warn("!!!■ 参数必须指定原App名称和新App名称。");console.warn("!!!■ 例如: npm run renameApp apps-old apps-new");return false;
}
oldAppName = String(process.argv.slice(2, 3));
newAppName = String(process.argv.slice(3, 4));
console.log(`  ···Old AppName: '${oldAppName}'`);
console.log(`  ···New AppName: '${newAppName}'`);
const newAppPathAbs = path.resolve(newAppName);
console.log(`  ···New AppPath: '${newAppPathAbs}'`);
console.log(`  ···Remove folder: '${newAppPathAbs}'`);
fs.existsSync(newAppPathAbs) && fs.rmSync(newAppPathAbs, { recursive: true, force: true });
console.log(`  ···Copy ${folderName} to folder: '${newAppPathAbs}'`);
fs.cpSync(folderName, newAppPathAbs, { recursive: true });
console.log(`  ···Replace all appNames: '${newAppPathAbs}'`);
replaceInDirectory(newAppPathAbs);
console.log("··· Rename end ···");

调用:

node renameApp oldAppName newAppName

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

记录计全支付切换到RabbitMQ时启动报错的问题

记录计全支付切换到RabbitMQ时启动报错的问题 首先在application.yml中切换到RabbitMQ配置安装RabbitMQ、Erlang、延时插件 rabbitmq_delayed_message_exchange&#xff0c;延迟插件必装 首先在application.yml中切换到RabbitMQ配置 # 第一处rabbitmq:addresses: 127.0.0.1:56…

减肥健身个人总结

个人一直没有健身运动的习惯&#xff0c;工作久了体重超标&#xff0c;体检报告各种指标也不太“美丽”&#xff0c;开始学习一些减肥健身知识&#xff0c;持续更新。目标是每周减1~2斤&#xff0c;用几个月时间持续到体重恢复正常。 文章目录 一、减脂原理---制造热量缺口控制…

停车场车位引导管理系统工作原理是什么,由哪些软硬件设备组成?

在现代城市中&#xff0c;随着汽车保有量的持续增长&#xff0c;停车难成为了许多城市面临的共同问题。有效管理停车场资源&#xff0c;提高车位利用率&#xff0c;减少寻找停车位的时间&#xff0c;对于缓解交通拥堵、提高城市运行效率具有重要意义。车位引导管理系统正是为了…

【全开源】国际版JAVA多商户运营版商城系统源码地摊兄源码多商户源码社交电商源码支持Android+IOS+H5

国际版多商户运营版商城系统&#xff1a;打造全球电商新生态 随着全球化趋势的深入发展&#xff0c;跨境电商已成为推动世界经济增长的重要力量。为了满足不同国家、地区商户的多样化需求&#xff0c;我们隆重推出“国际版多商户运营版商城系统”&#xff0c;旨在为全球商户搭…

请问空三前启动引擎,提示这个错误是什么情况?

答&#xff1a;在AppData-Local-GEngine目录下找到G3DEngineConfig.ini&#xff0c;检查ServerCheckCMD后面是否存在路径 &#xff0c;正常是为空&#xff0c;异常是为存在路径&#xff0c;需要清空该路径&#xff0c;然后重新启动引擎即可 重建大师是一款专为超大规模实景三维…

JUnit5参数化用例(二)

junit5MethodSource参数化&#xff1a; 通过MethodSource注解引用方法作为参数化的数据源信息在MethodSource注解的参数必须是静态的工厂方法&#xff0c;除非测试类被注释为TestInstance&#xff08;Lifecycle.PER_CLASS&#xff09;静态工厂方法的放回值需要和测试方法的参数…

Dalsa windows10下安装流程及部分问题分析

文章目录 安装及依赖库说明切换驱动模式流程问题&#xff1a;通过Dalsa SDK开发后找不到相机&#xff1f;问题&#xff1a;找不到采集卡&#xff1f; 安装及依赖库说明 官网(https://www.teledynedalsa.com/en/support/downloads-center/)下载的最新文件&#xff08;20240515&…

邮件接口实现自动化邮件发送的步骤和技巧?

邮件接口的安全性如何保障&#xff1f;怎么配置和测试邮件接口&#xff1f; 通过合理利用邮件接口&#xff0c;我们可以轻松实现邮件的批量发送、个性化定制以及跟踪反馈&#xff0c;为企业或个人带来诸多便利。接下来&#xff0c;就让AokSend来探讨邮件接口实现自动化邮件发送…

C语言简要(一)

总得让她开心吧 helloworld #include <stdio.h>int main() {printf("hello world!\n");return 0; } 程序框架 #include <stdio.h> int main {return 0; }输出 printf("hello world!\n"); "里面的内容叫做“字符串”&#xff0c;prin…

指标体系建设方案(36页PPT)

一、资料介绍 《指标体系建设方案》这份36页的PPT资料包&#xff0c;是针对当前组织发展需求而精心设计的一套全面、系统的指标构建方案。本资料包从理论到实践&#xff0c;深入浅出地阐述了指标体系建设的必要性、原则、步骤及实施要点&#xff0c;旨在帮助组织建立起科学、合…

人工智能到底是什么玩意儿?

说实话&#xff0c;每次听到“人工智能”这个词&#xff0c;我都感觉像是在听天书一样。它似乎总是被包裹在一堆高大上的术语和概念里&#xff0c;让人摸不着头脑。但今天&#xff0c;我决定挑战一下自己&#xff0c;把这个问题搞个明白&#xff01; 首先&#xff0c;我得承认&…

selenium发展史

Selenium Core 2004 年&#xff0c;Thoughtworks 的工程师 Jason Huggins 正在负责一个 Web 应用的测试工作&#xff0c;由于这个项目需要频繁回归&#xff0c;这导致他不得不每天做着重复且低效的工作。为了解决这个困境&#xff0c;Jason 开发了一个运行在 JavaScript 沙箱中…

Dockerfile中yum install 无法使用的问题

记录一次开发中使用Dockerfile进行centos7容器自定义的时候发现yum install无法使用 1. 查看主机是否能够联网 ping www.baidu.com主机能够联网 2. 查看进行Dockerfile进行打包的时候新容器是否联网 在Dockerfile中添加 RUN ping www.baidu.com 发现无法ping通 解决办法 …

节点电位与电路电压的研究

实验目的&#xff1a; 1. 验证电路中电位与电压的关系&#xff1b; 2. 掌握电路电位图的绘制方法&#xff1b; 3. 学会对简单的电路故障进行分析与排除。 实验内容及步骤&#xff1a; 1. 从“线性电路研究模块”实验板上选取元器件&#xff0c;结合实验箱提供的电源&#xff…

位拆分与运算

描述 题目描述&#xff1a; 现在输入了一个压缩的16位数据&#xff0c;其实际上包含了四个数据[3:0][7:4][11:8][15:12], 现在请按照sel选择输出四个数据的相加结果,并输出valid_out信号&#xff08;在不输出时候拉低&#xff09; 0: 不输出且只有此时的输入有…

EasyClick常见拓展函数及应用

十天学会从入门到实战游戏脚本开发教程--EassyClick入门教程&#xff1a;2024 十天学会EasyClick从入门到实战&#xff0c;自动化脚本&#xff0c;游戏脚本开发系列教程_哔哩哔哩_bilibili2024 十天学会EasyClick从入门到实战&#xff0c;自动化脚本&#xff0c;游戏脚本开发系…

Redis-Redis事务

Redis事务 Redis事务简介 Redis事务是一组命令的集合&#xff0c;一个事务中的所有命令都将被序列化&#xff0c;按照一次性、顺序性、排他 性的执行队列系列的命令。Redis单条命令保证原子性&#xff0c;但是事务不保证原子性&#xff0c;且没有回滚。事务中任意命令执行失败…

DBeaver如何csv导入数据

简言之先要创建任务&#xff0c;任务还需要去执行&#xff0c;只有执行之后才是执行真的导入了 那个保存任务真的很误导人啊 1.首先点击你要被导入的表&#xff0c;右键选择导入数据然后选择直接点击下一步,这个地方需要修改格式&#xff0c;否则会乱码 如果你导入的没有标题…

GPT-4o API 全新版本发布:提升性能,增加性价比

5月13日&#xff0c;OpenAI 发布了全新ChatGPT模型 GPT-4o&#xff0c;它在响应速度和多媒体理解上都有显著提升。在这篇文章中&#xff0c;我们将介绍 GPT-4o 的主要特点及其 API 集成方式。 什么是 GPT-4o&#xff1f; GPT-4o 是 OpenAI 于5月13日发布的最新多模态 AI 模型…

职业生涯第一课---“Redis分布式锁优化:确保唯一性与效率“

前言 最近因为刚入职公司开启自己的实习生涯&#xff0c;工作和毕设论文同步进行&#xff0c;导致有段时间没更新博客了&#xff0c;今天来分享一下最近学到的一些知识。 场景介绍 BOSS让我写一些接口&#xff0c;他提出这样一个需求&#xff0c;该接口的参数有多个&#xf…