赞
踩
基于uni-app的移动端项目,test环境,uat环境,prod环境需要部署到域名根目录下的不同目录。如果每次部署投产前都依靠分支手动修改路径,存在风险,易造成生产事故。
配置如下:
manifest.json文件中的router配置
{
"name" : "IAMS",
"appid" : "",
"description" : "",
"versionName" : "1.0.0",
"versionCode" : "100",
"transformPx" : false,
"h5" : {
"router" : {
"base" : "/test-app/"
}
}
}
执行构建命令时,改写manifest配置
const fs = require('fs')
const manifestPath = './src/manifest.json'
//1.--------------重写配置文件------------------
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')
}
//2.配置打包路由
const publicPathMap = {
"development:h5": "/test-app/",
"uat:h5": "/uat-app/",
"production:h5": "/prd-app/"
}
//3.根据构建写入对应配置
replaceManifest("router.base", JSON.stringify(publicPathMap[process.env.NODE_ENV]))
// console.log('声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/540348
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。