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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Facebook海外企业户/海外企业三不限户稳定性怎么样?

Facebook是做跨境电商卖家最有效的营销工具之一&#xff0c;不过相对的在Facebook上的广告竞争也会越来越激烈。目前外贸行业发展迅速。Facebook作为每天拥有30亿人口的活跃网络平台&#xff0c;约占全球网络用户的30%。平均来说&#xff0c;它的用户愿意每天花60分钟在平台上浏…

美港通正规股票交易市场人民币突然拉升,市场开启“大风车”模式?

查查配今天上午,市场又开启了“大风车”模式,多个热点轮番拉升。 一则关于地产行业利好的小作文流出,地产产业链上午爆发,租售同权、房地产服务、房地产开发等板块大涨,光大嘉宝、天地源等个股涨停。万科A涨超4%。 美港通证券以其专业的服务和较低的管理费用在市场中受到不少…

【上海生物发酵展精选展商】三门峡市高瑞生物技术有限公司

三门峡市高瑞生物技术有限公司注册成立于2017年2月23日&#xff0c;经营范围是微生物培养基原材料制造、销售。2017年度因场地搬迁、异地重建&#xff0c;公司由“三门峡市高山生物制品有限公司”更名为“三门峡市高瑞生物技术有限公司”。 该公司具有20余年丰富经验的微生物培…

对话 Databend Labs 联合创始人王吟:大模型浪潮里,云数仓是宠儿 | 极新企服直播实录

以下文章来源于极新 &#xff0c;作者王吟 据 IDC 预测&#xff0c;随着企业数字化转型&#xff0c;到 2026 年&#xff0c;中国大数据 IT 支出将达到 360 亿美元。Gartner 预测&#xff0c;得益于托管云服务的推动&#xff0c;到 2023 年&#xff0c;全球数据库市场有望达到 1…

超声波清洗机哪家好一点?四款超一流超声波清洗机大盘点

在追求极致清洁和维护精密工具、设备及珍贵物品的时代&#xff0c;超声波清洗机显得尤为重要。不仅因其高效、快速的清洁效果&#xff0c;更因其能够触及传统手工清洁所不能及的微小缝隙。无论你是珠宝设计师、机械工程师、还是热爱生活的普通家庭用户&#xff0c;超声波清洗机…

ValueError: Colors must be aRGB hex values

使用 openpyxla填充颜色时出现此错误

Python 机器学习 基础 之 监督学习 【分类器的不确定度估计】 的简单说明

Python 机器学习 基础 之 监督学习 【分类器的不确定度估计】 的简单说明 目录 Python 机器学习 基础 之 监督学习 【分类器的不确定度估计】 的简单说明 一、简单介绍 二、监督学习 算法 说明前的 数据集 说明 三、监督学习 之 分类器的不确定度估计 1、决策函数 2、预测…

怎么转换视频格式到mp4?格式转换,4种简单方法

转换视频格式到MP4可以使视频在各种设备上播放更加方便&#xff0c;而MP4格式的优势在于其高质量的视频和相对较小的文件大小。怎么转换视频格式到mp4&#xff1f;在本文中&#xff0c;我们将介绍四种简单有效的方法&#xff0c;帮助您快速将视频格式转换为MP4。 无论您是初学…

Linux内核的非确定行为消除

Linux内核作为一种广泛使用的开源操作系统内核&#xff0c;在多种硬件和设备上运行&#xff0c;提供了强大的功能和灵活的配置选项。然而&#xff0c;随着技术的发展和应用需求的增加&#xff0c;内核中出现的不确定行为也日益成为开发者和系统管理员关注的焦点。这些不确定行为…

Encryption Everywhere DV TLS CA - G1

Encryption Everywhere DV TLS CA - G1属于DigiCertCA机构发布&#xff0c;分为单域名SSL证书和通配符SSL证书两种为主&#xff0c;常见的是单域名SSL证书&#xff0c;到期后就需要重新申请。 单域名类型可以保护一个全域名&#xff0c;比如&#xff1a;一个子域名或者一个主域…

卖家必备:OZON、WB自养号测评详解从搭建到权重提升的全方位指导

俄罗斯跨境电商平台OZON、WB国内卖家入驻也日益渐多&#xff0c;很多卖家也都着手通过自养号测评方式打造产品权重&#xff0c;OZON、WB自养号测评具有多个优势&#xff0c;这些优势主要体现在以下几个方面&#xff1a; 权重提升快&#xff1a;通过自养号进行测评&#xff0c…

yolov8 模型架构轻量化 | 极致降参数量

模型轻量化加速是深度学习领域的重要研究方向&#xff0c;旨在减小模型的体积和计算复杂度&#xff0c;从而提高在资源受限设备上的运行效率&#xff0c;模型参数量在轻量化加速中扮演着至关重要的角色。 首先&#xff0c;模型参数量直接决定了模型的复杂度和存储空间需求。随…

Python数据分析与数据可视化 概念

考试题型&#xff1a; 一、填空题&#xff08;1分*10&#xff09; 二、程序代码填空&#xff08;1分*20&#xff09; 三、读程序写结果&#xff08;10分*4&#xff09; 四、程序设计&#xff08;10分*1&#xff09; 五、问答题&#xff08;20分*1&#xff09; 考试范围&#x…

【前段】开发五子棋小游戏全流程

使用前端技术开发五子棋小游戏 在这篇博文中&#xff0c;我们将详细介绍如何使用HTML、CSS和JavaScript开发一个简单的五子棋小游戏。我们将展示如何初始化棋盘、处理用户交互以及实现胜负判定。特别是&#xff0c;我们将着重介绍胜负判定的逻辑实现。 完整代码我放在了这里&a…

springBoot 如何让数据库读写分离

springBoot 数据库读写分离 数据库的读写分离,首先要把spring 中的自动加载的类排除掉,因为我们配置文件配置了多数据源,并且希望自己主导sql语句执行的数据库。 启动类排除自动配置 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) 循环引用问题…

【喜马拉雅】副业分享、喜马拉雅如何赚钱、喜马拉雅写作赚钱、喜马拉雅会员免费吗?喜马拉雅极速版赚钱

上班族一枚&#xff0c;已经实现副业赚钱。结合自己的经历&#xff0c;给大家分享几点找副业的经验&#xff0c;专治「闲成废柴病」。 纯干货分享&#xff0c;不拉群、不私聊&#xff0c;请放心食用。建议先点赞收藏一下。 一、任何说马上能赚钱的副业&#xff0c;一般都不太靠…

React 状态管理库深度对比:在做技术选型的时候如何选择合适的状态库,nolan出品

掘金链接&#xff1a;https://juejin.cn/post/7368288987642232872 1,简介 在状态共享这方面&#xff0c;不像 Vuex&#xff0c;React 的官方并没有强力推荐某种封装方案&#xff0c;所以 React 的状态管理工具五花八门&#xff0c;百花齐放&#xff0c; react-redux、dva、C…

详解 JuiceFS sync 新功能,选择性同步增强与多场景性能优化

JuiceFS sync 是一个强大的数据同步工具&#xff0c;支持在多种存储系统之间进行并发同步或迁移数据&#xff0c;包括对象存储、JuiceFS、NFS、HDFS、本地文件系统等。此外&#xff0c;该工具还提供了增量同步、模式匹配&#xff08;类似 Rsync&#xff09;、分布式同步等高级功…

web安全学习笔记(16)

记一下第27-28课的内容。Token 验证 URL跳转漏洞的类型与三种跳转形式&#xff1b;URL跳转漏洞修复 短信轰炸漏洞绕过挖掘 一、token有关知识 什么是token&#xff1f;token是用来干嘛的&#xff1f;_token是什么意思-CSDN博客 二、URL跳转漏洞 我们在靶场中&#xff0c;…

【python量化交易】—— 双均线择时策略 - Qteasy自定义交易策略【附源码】

使用qteasy自定义并回测双均线交易策略 使用qteasy自定义并回测一个双均线择时策略策略思想导入qteasy模块创建一个新的策略回测交易策略&#xff0c;查看结果 使用qteasy自定义并回测一个双均线择时策略 我们今天使用qteasy来回测一个双均线择时交易策略&#xff0c;qteasy是…