const fs = require("fs");
const path = require("path");
const do_task = require("./single-html/build");
const outputPrefix = '';
const htmlChannel = ['applovin', 'unity', 'appier', 'ironsource', 'mintegral', 'moloco'];
// 创建 dist 目录
if (!fs.existsSync('dist')) {
fs.mkdirSync('dist');
}
// 处理 HTML 渠道
async function processHtmlChannels() {
for (const channelName of htmlChannel) {
// 删除所有可能存在的旧文件
const filesToDelete = ['mraid_support.js', 'mraid.js', 'mintegral.js', 'moloco.js'];
filesToDelete.forEach(file => {
const filePath = path.join('web-mobile', file);
if (fs.existsSync(filePath)) {
fs.unlinkSync(filePath);
console.log(`已删除: ${filePath}`);
}
});
// 从 networks 找到复制到 web-mobile 中
const mraidSupportFile = path.join('networks', 'mraid_support.js');
const mraidDestinationFile = path.join('web-mobile', 'mraid_support.js');
if (['applovin', 'unity', 'appier', 'ironsource'].includes(channelName)) {
if (fs.existsSync(mraidSupportFile)) {
fs.copyFileSync(mraidSupportFile, mraidDestinationFile);
console.log(`已复制: ${mraidSupportFile} 到 ${mraidDestinationFile}`);
}
}
if (['mintegral', 'moloco'].includes(channelName)) {
const fileName = `${channelName}.js`;
const sourceFile = path.join('networks', fileName);
const destFile = path.join('web-mobile', fileName);
if (fs.existsSync(sourceFile)) {
fs.copyFileSync(sourceFile, destFile);
console.log(`已复制: ${sourceFile} 到 ${destFile}`);
}
}
const htmlFilePath = path.join('web-mobile', 'index.html');
let htmlContent = fs.readFileSync(htmlFilePath, 'utf-8');
// 移除非当前渠道包的 \\n`, 'g');
htmlContent = htmlContent.replace(scriptRegex, '');
}
});
// 移除 mraid_support.js 和 mraid.js 的 \n`;
} else {
channelScriptTag = ` \n`;
}
if (!htmlContent.includes(channelScriptTag)) {
htmlContent = htmlContent.replace(/<\/head>/, `${channelScriptTag}`);
}
// 替换包含 window.vConsole = new VConsole 的 \n`;
htmlContent = htmlContent.replace(vConsoleScriptRegex, cocosScriptTag);
// 额外引入 loader-and-starter.js 和 asset-map.js 到 body 中
const loaderScriptTag = `\n`;
const assetMapScriptTag = `\n`;
const bodyScriptTags = `${cocosScriptTag}${loaderScriptTag}${assetMapScriptTag}`;
if (!htmlContent.includes(loaderScriptTag) && !htmlContent.includes(assetMapScriptTag)) {
htmlContent = htmlContent.replace(cocosScriptTag, bodyScriptTags);
}
// 移除单渠道的 SDK script 标签
const sdkScriptTag = `\n`;
htmlContent = htmlContent.replace(sdkScriptTag, '');
fs.writeFileSync(htmlFilePath, htmlContent);
console.log(`已将 ${channelName}.js 和相关 script 引入到 index.html 中`);
// 调用 do_task 方法,将 web-mobile 下的所有包打包成一个 HTML
do_task();
// 如果是 ironsource 渠道,将 插入到 body 标签之前
if (channelName === 'ironsource') {
htmlContent = fs.readFileSync(path.join('dist', 'index.html'), 'utf-8');
htmlContent = htmlContent.replace(/<\/body>/, `