diff --git a/scripts/mp-weixin.patch.js b/scripts/mp-weixin.patch.js index 8f4118d..979baed 100644 --- a/scripts/mp-weixin.patch.js +++ b/scripts/mp-weixin.patch.js @@ -102,22 +102,22 @@ async function commonPatch(mode = 'production') { let vendorContent = await fsp.readFile(vendorPath, 'utf8'); - const requireLine = 'const site = require("../site");'; - const versionLine = 'const __app_version = require("../version");'; - // 检查文件开头(例如前 1000 字符)是否已经包含这些 require 语句 - const inspectPrefix = vendorContent.slice(0, 1000); - const hasSiteRequire = new RegExp( - '^\\s*const\\s+site\\s*=\\s*require\\s*\\([\'"]\\.\\./site[\'"]\\);?', - 'm' - ).test(inspectPrefix); - const hasVersionRequire = new RegExp( - '^\\s*const\\s+__app_version\\s*=\\s*require\\s*\\([\'"]\\.\\./version[\'"]\\);?', - 'm' - ).test(inspectPrefix); + const requireLines = [ + 'const site = require("../site");', + 'const __app_version = require("../version");' + ]; - if (hasSiteRequire && hasVersionRequire) { - console.log('vendor.js 开头已包含 require 语句,跳过追加。'); - return; + // 清理已有的重复注入(兼容新旧格式:../version.json 和 ../version) + let cleaned = false; + const injectPatterns = [ + /^\s*const\s+site\s*=\s*require\s*\(['"]\.\.\/site(\.js)?['"]\);?\s*\r?\n/gm, + /^\s*const\s+__app_version\s*=\s*require\s*\(['"]\.\.\/version(\.json)?['"]\);?\s*\r?\n/gm, + ]; + for (const pattern of injectPatterns) { + if (pattern.test(vendorContent)) { + vendorContent = vendorContent.replace(pattern, ''); + cleaned = true; + } } // 把 require 语句 + newline 插入文件最前面。 @@ -131,13 +131,9 @@ async function commonPatch(mode = 'production') { vendorContent = vendorContent.slice(1); } - const linesToInject = [requireLine]; - if (!hasVersionRequire) { - linesToInject.push(versionLine); - } - const newContent = prefix + linesToInject.join(eol) + eol + vendorContent; + const newContent = prefix + requireLines.join(eol) + eol + vendorContent; await fsp.writeFile(vendorPath, newContent, 'utf8'); - console.log(`已在 vendor.js 开头追加: ${linesToInject.join(', ')}`); + console.log(cleaned ? `已清理旧注入并重新注入: ${requireLines.join(', ')}` : `已在 vendor.js 开头追加: ${requireLines.join(', ')}`); } catch (err) { console.error('发生错误:', err); process.exitCode = 1;