uni-app动态修改manifest.json中的参数

news2024/9/23 15:26:12

以根据不同环境配置不同的h5运行路径为例,动态修改h5.router.base

 

假设当前有三种环境

  1. process.env.NODE_ENV === 'development'
  2. process.env.NODE_ENV === 'test'
  3. process.env.NODE_ENV === 'production'


在src根目录下创建modifyManifest.js文件(一定是src)

文件内容如下:

const fs = require('fs')
//此处如果是用HBuilderX创建的项目manifest.json文件在项目跟目录,如果是 cli 创建的则在 src 下,这里要注意
//process.env.UNI_INPUT_DIR为项目所在的绝对路径,经测试,相对路径会找不到文件
const manifestPath = process.env.UNI_INPUT_DIR + '/manifest.json'
let Manifest = fs.readFileSync(manifestPath, { encoding: 'utf-8' })
function replaceManifest(path, value) {
  const arr = path.split('.')
  const len = arr.length
  const lastItem = arr[len - 1]

  let i = 0
  let ManifestArr = Manifest.split(/\n/)

  for (let index = 0; index < ManifestArr.length; index++) {
    const item = ManifestArr[index]
    if (new RegExp(`"${arr[i]}"`).test(item)) ++i;
    if (i === len) {
      const hasComma = /,/.test(item)
      ManifestArr[index] = item.replace(new RegExp(`"${lastItem}"[\\s\\S]*:[\\s\\S]*`), `"${lastItem}": ${value}${hasComma ? ',' : ''}`)
      break;
    }
  }

  Manifest = ManifestArr.join('\n')
}
//动态配置 h5.router.base ,这部分的代码可根据自己的需要写,需要改什么,按照manifest.json对应的路径写好即可
if (process.env.NODE_ENV === 'production') {
replaceManifest('h5.router.base', '"/game"')
} 
else if (process.env.NODE_ENV === 'test') { 
replaceManifest('h5.router.base', '"/test/game"') 
}
else if (process.env.NODE_ENV === 'development') { 
replaceManifest('h5.router.base', '"/dev/game"') 
}



fs.writeFileSync(manifestPath, Manifest, {
  "flag": "w"
})

然后在vue.confing.js中引入这个文件,没有这个文件可以自己新建,新建在项目的根目录即可。

vue.config.js内容如下

let a = require('./src/modifyManifest')//我看别人介绍的是用的import,我这里用import报错,改成了require,引入对应的文件即可。

补充:针对于为什么这里用了require而不是import请参考文章:https://segmentfault.com/a/1190000042432407?utm_source=sf-hot-article​​​​​​​ 

项目目录如下

 按照上述方法,经过测试,不管是本地运行不同环境,还是build不同环境的包,皆可自动修改manifest.json中h5对应的不同基础路径

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

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

相关文章

渗透测试工程师的职业发展

前段时间看了一个大哥写的程序员的职业发展&#xff0c;感触很深&#xff0c;这几天晚上就参考大哥的思路结合自身的经历写一下渗透工程师的职业发展之路&#xff0c;顺便也让迷茫中的小伙伴们有个参考。 很多干渗透、安全服务、安全运维的人在干了3-5年后面对迷茫期&#xff…

2022年度猫狗粮销售数据:十大热门品牌排行榜,哪些品牌入围?

当前&#xff0c;“吸猫撸狗”正成为当代年轻人新的生活方式&#xff0c;越来越多的人乐意为了自己的“毛孩子”买单&#xff0c;这使得宠物经济快速发展。伴随着宠物食品概念越来越被消费者所接受&#xff0c;目前&#xff0c;我国宠物食品行业呈现爆发式增长&#xff0c;宠物…

电脑只有一个c盘怎么办?看我怎么一招解决!

很多朋友在网上新买了笔记本电脑&#xff0c;打开电脑后发现它只有一个磁盘&#xff0c;电脑只有一个c盘怎么办&#xff1f;下面以Windows 10系统为例进行步骤说明&#xff0c;让我们一起来解决电脑只有一个磁盘的难题吧&#xff01; 操作环境&#xff1a; 演示机型&#xff1a…

再谈什么是【组织能力】

&#xff08;1&#xff09;我过去讲过两个公式&#xff1a;从这两个公式都能看出来&#xff0c;企业管理和业务管理的巨大区别。我过去也专门讲过企业管理&#xff1a;愿景使命-文化价值观、战略目标-战略路径企业治理-企业组织、商业模式创新-品牌影响力-持续客户关系经营健康…

YoloV5+DAMOYOLO:将DAMOYOLO中的GFPN结构与Yolov5结合

前段时间写了一篇damoYolo的训练教程&#xff0c;同时也对自己的数据集进行了训练&#xff0c;虽然效果确实不是很好&#xff0c;但是damoyolo的一些思想和网络结构啥的还是可以借鉴使用的&#xff0c;此次将damoyolo的RepGFPN结构掏出来放到v5的NECK中&#xff0c;测试一下对本…

进程间通信——管道通信

目录 1 管道概念 2 无名管道&#xff08;pipe&#xff09;只能给有亲缘关系进程通信 步骤 注意事项 3 有名管道&#xff08;fifo&#xff09; 可以给任意单机进程通信 步骤 注意事项 1 管道概念 管道是UNIX 系统IPC 的最古老形式&#xff0c; 并且所有UNIX 系统都提供此种…

JavaWeb项目 -- 博客系统

JavaWeb项目 -- 博客系统前言&#xff1a;页面展示一、创建 Maven 项目二、设计数据库三、封装数据库的操作3.1 创建 DBUtil 类3.2 创建 Blog 类3.3 创建 User 类3.4 创建类 BlogDao3.5 创建类 UserDao四、导入准备好的前端代码五、实现博客列表界面5.1 约定好前后端交互接口5.…

excel函数应用:如何用数位函数分段提取身份证信息 上篇

用Excel处理身份证号&#xff0c;在我们日常工作中是相当普遍的&#xff0c;尤其是对于做人事行政工作、财务工作的同学来说&#xff0c;更显得十分重要。那么一个身份证号&#xff0c;能给予我们多少信息量呢&#xff1f;无论我们需要用Excel处理何种数据&#xff0c;首先都应…

python 使用矢量化替换循环

介绍 &#x1f3b5;&#x1f57a;&#x1f5e3;&#x1f3c0; 循环自然而然地出现在我们身边&#xff0c;我们了解几乎所有编程语言中的循环。因此&#xff0c;默认情况下&#xff0c;只要有重复操作&#xff0c;我们就会开始执行循环。但是当我们处理大量迭代&#xff08;数百…

5G NR标准 第14章 调度

第14章 调度 NR 本质上是一个调度系统&#xff0c;这意味着调度器决定何时以及向哪些设备分配时间、频率和空间资源&#xff0c;以及使用什么传输参数&#xff0c;包括数据速率。 调度可以是动态的或半静态的。 动态调度是基本的操作模式&#xff0c;其中调度程序针对每个时间…

【JVM 从入门到精通系列】 JVM 字节码指令篇 之 Class文件结构

一、概述 字节码文件的跨平台性 Java语言&#xff1a;跨平台的语言 当Java源代码成功编译成字节码后&#xff0c;如果想在不同平台上运行&#xff0c;则无需再次编译。这个优势已经不再那么吸引人了&#xff0c;Python、PHP、Perl、Ruby、Lisp等有强大的编译器。跨平台似乎已…

uniprot蛋白序列数据库,蛋白质结构数据库PDB;pymol pse格式

https://www.bilibili.com/video/BV1p34y1D77Z https://www.bilibili.com/video/BV1Xa4y1W7Dx 蛋白质结构数据库PDB 注意点&#xff1a;很多数据含有共晶配体的结构 很多时候&#xff0c;蛋白晶体结构中不只是蛋白&#xff0c;还可能有核酸、多肽、辅酶、小分子化合物&#…

振动力学——2.单自由度系统无阻尼自由振动能量法

对于不计阻尼即认为没有能量损失的单自由度系统&#xff0c;可利用能量守恒原理建立自由振动微分方程&#xff0c;或直接求出固有频率无阻尼系统为保守系统&#xff0c;其机械能守恒&#xff0c;即动能T和势V之和保持不变 &#xff0c;即&#xff1a; 或 (1-9) 图1-7弹簧质量…

Clickhouse 三节点三分片六实例双副本部署,用户密码权限配置,cpu内存资源优化

文章目录1. rpm安装ck2. 集群规划3. config.xml文件配置&#xff08;1&#xff09;分片副本信息配置&#xff08;2&#xff09;zookeeper信息配置&#xff08;3&#xff09;macros 信息配置&#xff08;4&#xff09;注释掉映射信息&#xff08;5&#xff09;修改实例中的日志路…

深入理解MySQL——master thread分析

1. master thread的线程分析 master thread的线程优先级别最高。其内部由几个循环&#xff08;loop&#xff09;组成&#xff1a;主循环&#xff08;loop&#xff09;、后台循环&#xff08;background loop&#xff09;、刷新循环&#xff08;flush loop&#xff09;、暂停循…

基于springcloud的学习笔记1

概述springcloud的微服务分布式架构对于springboot的服务集成开发最大的优点就是解决了&#xff0c;springboot中模块之间的高耦合度&#xff0c;springcloud进行高粒度的拆分服务之后就可以降低在高并发下会出现的所有模块服务不可用。同理springcloud就是拆分出不同的模块成为…

Window 环境 安装 mycli

Window 环境 安装 Mycli 平时都用 图形化界面操作MySQL 如 navicat, workbench. 为了更专业一点也锻炼一下动手能力&#xff0c;现在打算换成命令行的方式操作。了解到 myclli这个工具。方便体验&#xff0c;就先在window环境装一个玩玩。 mycli 是一个 MySQL 命令行客户端工具…

【LeetCode每日一题】——50.Pow(x, n)

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 数学 二【题目难度】 中等 三【题目编号】 50.Pow(x, n) 四【题目描述】 实现 pow(x,n)pow(x…

Exchange漏洞分析:SSRF RCE

0x00 前言 在今年3月份&#xff0c;微软公布了多个Microsoft Exchange的高危漏洞。ProxyLogon是Exchange历史上最具影响力的漏洞之一&#xff0c;有上千台Exchange服务器被植入了webshell后门。 0x01 漏洞描述 CVE-2021-26855是一个SSRF漏洞&#xff0c;利用该漏洞可以绕过E…

一文搞定Nginx的压缩、黑白名单、防盗链、零拷贝、跨域、双机热备等知识

引言早期的业务都是基于单体节点部署&#xff0c;由于前期访问流量不大&#xff0c;因此单体结构也可满足需求&#xff0c;但随着业务增长&#xff0c;流量也越来越大&#xff0c;那么最终单台服务器受到的访问压力也会逐步增高。时间一长&#xff0c;单台服务器性能无法跟上业…