refactor(vue.config): 简化UNI_OUTPUT_DIR逻辑,支持通用H5脚本+读取manifest base
This commit is contained in:
@@ -10,21 +10,41 @@ console.log('[vue.config] 已加载');
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
// 定义UNI_OUTPUT_DIR环境变量
|
// 定义UNI_OUTPUT_DIR环境变量(H5 自定义发行脚本使用)
|
||||||
try {
|
try {
|
||||||
if (!process.env.NODE_ENV) {
|
if (!process.env.NODE_ENV) {
|
||||||
throw new Error('NODE_ENV 环境变量未设置');
|
throw new Error('NODE_ENV 环境变量未设置');
|
||||||
}
|
}
|
||||||
|
|
||||||
const buildDir = process.env.NODE_ENV === 'production' ? 'build' : 'dev';
|
const buildDir = process.env.NODE_ENV === 'production' ? 'build' : 'dev';
|
||||||
|
const platform = process.env.UNI_PLATFORM || '';
|
||||||
const UNI_SCRIPT = process.env.UNI_SCRIPT ?? '';
|
const UNI_SCRIPT = process.env.UNI_SCRIPT ?? '';
|
||||||
|
|
||||||
if ([
|
// 所有 H5 自定义脚本统一处理,无需在 vue.config.js 中硬编码脚本名
|
||||||
// 参照 package.json 中定义的 "uni-app" --> "scripts"
|
if (platform === 'h5' && UNI_SCRIPT) {
|
||||||
'h5-xcx20.5g-quickapp.com', 'h5-xcx.aigc-quickapp.com', 'h5-5g.aigc-quickapp.com', 'h5-test.aigc-quickapp.com'
|
// 从 manifest.json 读取 h5.router.base,拼接到输出路径
|
||||||
].includes(UNI_SCRIPT)) {
|
let baseSuffix = '';
|
||||||
process.env.UNI_OUTPUT_DIR = path.join(__dirname, `unpackage/dist/${buildDir}/h5/${UNI_SCRIPT}`);
|
try {
|
||||||
|
const manifest = require('./manifest.json');
|
||||||
|
if (manifest?.h5?.router?.base) {
|
||||||
|
// 将 /hwappx/common/ 转换为 hwappx.common
|
||||||
|
baseSuffix = manifest.h5.router.base.replace(/^\/+|\/+$/g, '').replace(/\//g, '.');
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
|
// 从脚本 env 中获取域名(优先使用 UNI_APP_DOMAIN,否则从 UNI_SCRIPT 提取)
|
||||||
|
let domain = '';
|
||||||
|
if (process.env.UNI_APP_DOMAIN) {
|
||||||
|
try {
|
||||||
|
domain = new URL(process.env.UNI_APP_DOMAIN).hostname;
|
||||||
|
} catch (e) {
|
||||||
|
domain = process.env.UNI_APP_DOMAIN.replace(/^https?:\/\//, '').replace(/\/.*$/, '');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
domain = UNI_SCRIPT.replace(/^h5-/, '');
|
||||||
|
}
|
||||||
|
// 格式: {域名}-{base用.连接}
|
||||||
|
const outputDirName = baseSuffix ? `${domain}-${baseSuffix}` : domain;
|
||||||
|
process.env.UNI_OUTPUT_DIR = path.join(__dirname, `unpackage/dist/${buildDir}/h5/${outputDirName}`);
|
||||||
console.log('UNI_OUTPUT_DIR = ', process.env.UNI_OUTPUT_DIR);
|
console.log('UNI_OUTPUT_DIR = ', process.env.UNI_OUTPUT_DIR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user