uniapp 自定义发行 动态修改 manifest.json

这篇具有很好参考价值的文章主要介绍了uniapp 自定义发行 动态修改 manifest.json。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这边需求是根据不同的打包环境 设置不同的标题以及路径。方便各种调试。防止 每次手动每次修改 manifest.json 出错

 uniapp 自定义发行:

添加自定义发行之后 Hbuilder 编辑器会自动多 出来按钮

官方文档:概述 | uni-app官网

uniapp 自定义发行 动态修改 manifest.json

uniapp 自定义发行 动态修改 manifest.json

我这里的配置是这样: package.json

这里主要用于显示两个按钮以及设置相关 字段:

{
	"dependencies": {
		"js-md5": "^0.7.3",
		"moment": "^2.29.4"
	},

	"uni-app": {
		"scripts": {
			"h5_prod": {
				"title": "品创收银台",
				"env": {
					"UNI_PLATFORM": "h5",
					"NODE_ENV": "prod",
					"UNI_OUTPUT_DIR": "dist/build/h5_prod"
				},
				"router": {
					"mode": "history",
					"base": "/payment/h5/"
				},
				"define": {
					"H5_PROD": true
				}
			},
			"h5_uat": {
				"title": "品创收银台uat",
				"env": {
					"UNI_PLATFORM": "h5",
					"NODE_ENV": "uat",
					"UNI_OUTPUT_DIR": "dist/build/h5_uat"
				},
				"router": {
					"mode": "history",
					"base": "/payment/h5_uat/"
				},
				"define": {
					"H5-UAT": true
				}
			}
		}
	}
}

 设置网页标题和 base 路径:

 uniapp 自定义发行 动态修改 manifest.json

动态修改 manifest.json 

需求是 根据发布:  h5_prod / h5_uat  来动态修改  manifest.json 文件

官方文档: uni-app官网

uniapp 自定义发行 动态修改 manifest.json

这里需要在 项目根路径下创建vue.config.js 文件

我这里 代码主要是 判断按钮的来源进行处理:

console.log('process.env[UNI_SCRIPT]:', process.env['UNI_SCRIPT'])
if (process.env['UNI_SCRIPT'] == 'h5_prod') {
	replaceManifest('h5.title', '"品创收银台"')
	replaceManifest('h5.router.base', '"/payment/h5/"')
} else if (process.env['UNI_SCRIPT'] == 'h5_uat') {
	replaceManifest('h5.title', '"品创收银台uat"')
	replaceManifest('h5.router.base', '"/payment/h5_uat/"')
}

 完整代码如下:(贴出来的代码 没有删除注释 留作它用)文章来源地址https://www.toymoban.com/news/detail-511372.html

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')
}
console.log('process.env[UNI_SCRIPT]:', process.env['UNI_SCRIPT'])
if (process.env['UNI_SCRIPT'] == 'h5_prod') {
	replaceManifest('h5.title', '"品创收银台"')
	replaceManifest('h5.router.base', '"/payment/h5/"')
} else if (process.env['UNI_SCRIPT'] == 'h5_uat') {
	replaceManifest('h5.title', '"品创收银台uat"')
	replaceManifest('h5.router.base', '"/payment/h5_uat/"')
}

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

module.exports = {

}

// module.exports = {
// 	chainWebpack: config => {
// 		console.log("process.env.BUILD_TYPE:------------------:", process.env['UNI_SCRIPT'])
// 		console.log("config:------------------:", process['UNI_MANIFEST'])
// 		//console.log("config:------------------:", config)
// 		// config
// 		//   .plugin('define')
// 		//   .tap(args => {
// 		//     args[0]['process.env'].VUE_APP_TEST = '"test"'
// 		//     return args
// 		//   })

// 		if (process.env['UNI_SCRIPT'] == 'h5_prod') {
// 			process['UNI_MANIFEST']['h5']['title'] = '"品创收银台"'
// 			process['UNI_MANIFEST']['h5']['router'] = {
// 				mode: 'history',
// 				base: '/payment/h5/'
// 			}
// 		} else if (process.env['UNI_SCRIPT'] == 'h5-uat') {
// 			process['UNI_MANIFEST']['h5']['title'] = '"品创收银台uat"'
// 			process['UNI_MANIFEST']['h5']['router'] = {
// 				mode: 'history',
// 				base: '/payment/h5_uat/'
// 			}
// 		}
// 		return config
// 		// console.log("config:------------------:", process['UNI_MANIFEST'])
// 		// config
// 		// 	.plugin('define')
// 		// 	.tap(args => {
// 		// 		console.log("args: ", args)
// 		// 		// 在这里也可以写全局的变量
// 		// 		return args
// 		// 	})

// 		// console.log(config.Manifest)
// 		// return config
// 	}
// }
// module.exports = {
// 	defineConfig: Manifest
// }

到了这里,关于uniapp 自定义发行 动态修改 manifest.json的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)

    UniApp 运行到浏览器的时候,接口会跨域报错,这里通过两种方式解决,第一:修改Uniapp自带的manifest.json 源码视图并进行配置h5设置。第二:在项目根目录新建vue.config.js并配置代理。 二选一即可。 修改或调整配置文件后,推荐重新运行,以防不生效。 配置完成后,请求接口

    2024年01月16日
    浏览(46)
  • uniapp的manifest.json配置后,支付宝小程序include不生效,map高级渲染

                    支付宝小程序在使用map组件时,使用高级渲染需要使用xml组件,在                  manifest.json下配置include字段,编译完没有该字段,不生效。                                                          这里是支付宝文档:支付宝官

    2024年02月07日
    浏览(42)
  • HBuilderX - uniapp - 运行项目到微信开发者工具 - 提示项目下缺少manifest.json文件

    1、有manifest.json的情况下报错,选中项目,右键菜单,重新识别项目类型,再次运行 参考文档: HBuilderX - 项目根目录下缺少manifest.json - 峻宇 - 博客园 2、HBuilderX 运行uniapp到微信开发者工具,提示工具的服务端口已关闭。要使用命令行调用工具,请在下方输入 y 以确认开启,

    2024年02月13日
    浏览(69)
  • uniapp中动态修改导航栏标题

    使用场景:从A页面跳转至B页面,在A页面有多种消息类型,跳转B页面则显示不同的导航栏标题,如视频所示: A页面代码如下: B页面代码如下: Who we were does not dictate who we will be

    2024年02月11日
    浏览(46)
  • Unity 动态修改宏定义

    宏定义可以方便的区分出不同情况下使用的代码。 比较经典的就是 UNITY_EDITOR 这类 开发者同样可以自己定义宏来进行一些控制,位置如下图: 但是每次都要自己去手动添加和修改未免有些麻烦,所以就有了通过代码动态设置宏定义的方式。方便开发者随时开启和关闭某种功

    2024年02月03日
    浏览(39)
  • 谷歌插件开发:manifest.json 配置文件详解

    在当今的互联网时代,浏览器插件扮演着重要的角色,为用户提供了各种定制化的功能和增强体验。Google Chrome作为最受欢迎的浏览器之一,也提供了丰富的插件生态系统。而在Chrome插件的开发中,manifest.json配置文件起着至关重要的作用。本节将详细讲解manifest.json文件的作用

    2024年02月11日
    浏览(35)
  • 【JSON渲染工具】Element UI动态生成表格,多行表头,自定义表头合并

    table :中每个对象代表一张表格; table_header :表示表格表头数据; headerColor :表示表格表头背景颜色; headerData :表示表格表头内容数据; prop :值为与 table_content 中对象属性对应,data_list中的avgMen对应的prop需为\\\"first.avgMen\\\"(这里跟获取对象的点语法相似),如以下例子 label

    2024年04月10日
    浏览(56)
  • uniapp自定义动态tabbar及全局挂载底部自定义组件

    本篇文章解决的问题如下: 1:uniapp在pages.json中定义的tabbar,在非tabbar页面的时候不会显示,所以自定义了一个tabbar组件。(注意是自定义组件不是官方的custom-tab-bar组件) 2:有些tabbar需要动态变化,会员登陆前和会员登陆后可能会需要在tabbar上面展示不同的项目,所以要做

    2024年02月02日
    浏览(64)
  • Unity 动态修改自定义字体(Text)颜色

    参考:Unity 给Text文字添加不同的颜色_贪小心的博客-CSDN博客_unity文字颜色 原文: 在Unity中有些文字需动态更改颜色,通常通过color=redxxx/color而原本Color类所提供的颜色数量有限,就需要添加自己调好的Hexadecimal。 而动态修改颜色用Hexadecimal的话写在Text内容本身的时候就会出现

    2024年02月16日
    浏览(41)
  • uniapp 微信小程序配置全局主题色、实现动态修改主题色

            本文的实现目标是全局配置小程序的整体主题色,包括本地图标的色调。第一步实现在本地可以统一修改整体的主题色以及本地图标的颜色;第二步实现通过后台接口动态调整小程序前端的整体主题色以及本地图标颜色。本地图标的主题色调整需要使用svg格式的图片

    2024年02月01日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包