From c1fbabe07bcfd1ca4b6f36ebe4fb2bb6c511576f Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Mon, 11 May 2026 10:54:36 +0800 Subject: [PATCH] =?UTF-8?q?refactor(vue.config):=20=E7=AE=80=E5=8C=96UNI?= =?UTF-8?q?=5FOUTPUT=5FDIR=E9=80=BB=E8=BE=91=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E9=80=9A=E7=94=A8H5=E8=84=9A=E6=9C=AC+=E8=AF=BB=E5=8F=96manife?= =?UTF-8?q?st=20base?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vue.config.js | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/vue.config.js b/vue.config.js index 4b7a3ed..ab0cf9d 100644 --- a/vue.config.js +++ b/vue.config.js @@ -10,21 +10,41 @@ console.log('[vue.config] 已加载'); // } -// 定义UNI_OUTPUT_DIR环境变量 +// 定义UNI_OUTPUT_DIR环境变量(H5 自定义发行脚本使用) try { if (!process.env.NODE_ENV) { throw new Error('NODE_ENV 环境变量未设置'); } const buildDir = process.env.NODE_ENV === 'production' ? 'build' : 'dev'; - + const platform = process.env.UNI_PLATFORM || ''; const UNI_SCRIPT = process.env.UNI_SCRIPT ?? ''; - if ([ - // 参照 package.json 中定义的 "uni-app" --> "scripts" - 'h5-xcx20.5g-quickapp.com', 'h5-xcx.aigc-quickapp.com', 'h5-5g.aigc-quickapp.com', 'h5-test.aigc-quickapp.com' - ].includes(UNI_SCRIPT)) { - process.env.UNI_OUTPUT_DIR = path.join(__dirname, `unpackage/dist/${buildDir}/h5/${UNI_SCRIPT}`); + // 所有 H5 自定义脚本统一处理,无需在 vue.config.js 中硬编码脚本名 + if (platform === 'h5' && UNI_SCRIPT) { + // 从 manifest.json 读取 h5.router.base,拼接到输出路径 + let baseSuffix = ''; + 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); }