167 lines
6.0 KiB
JavaScript
167 lines
6.0 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
const JSON5 = require('json5');
|
|
|
|
const root = path.join(__dirname, '..');
|
|
const sourcePath = path.join(root, 'electron-builder.json5');
|
|
const outputPath = path.join(root, 'tools', 'oem-batch-builder', 'electron-builder.oem.generated.json');
|
|
|
|
function isLargeBundledResource(entry) {
|
|
const from = String(entry && entry.from || '').replace(/\\/g, '/');
|
|
const to = String(entry && entry.to || '').replace(/\\/g, '/');
|
|
return to.startsWith('resources-bundles/')
|
|
|| from === 'ziti'
|
|
|| from === 'bgm'
|
|
|| from.startsWith('packaging/vendor/')
|
|
|| from.includes('/packaging/vendor/');
|
|
}
|
|
|
|
const config = JSON5.parse(fs.readFileSync(sourcePath, 'utf8'));
|
|
const oemCoverTemplateFiles = [
|
|
'common/cover-templates/huangbai-shishi.jpg',
|
|
'common/cover-templates/landi-baizi.jpg',
|
|
'common/cover-templates/dasi-baobao.jpg',
|
|
'common/cover-templates/xiehanghuangbai.jpg',
|
|
'common/cover-templates/fenghong-xubai.jpg',
|
|
'common/cover-templates/renyixujzhong.jpg',
|
|
'common/cover-templates/qinglan-xushi.png',
|
|
'common/cover-templates/honghang-xushi.png',
|
|
'common/cover-templates/baihang-xushi.png',
|
|
];
|
|
for (const templateId of ['11', '22', '33', '44', '55', '66', '77', '88']) {
|
|
oemCoverTemplateFiles.push(`common/cover-templates/subtitle-preview-template_system_${templateId}.png`);
|
|
oemCoverTemplateFiles.push(`common/cover-templates/subtitle-preview-template_system_classic_${templateId}.png`);
|
|
}
|
|
const oemAsarExcludes = [
|
|
'!node_modules/date-fns{,/**/*}',
|
|
'!node_modules/fluent-ffmpeg{,/**/*}',
|
|
'!node_modules/ttf2woff2{,/**/*}',
|
|
'!node_modules/vue-timeago3{,/**/*}',
|
|
'!node_modules/pdfkit{,/**/*}',
|
|
'!node_modules/fontkit{,/**/*}',
|
|
'!node_modules/@resvg{,/**/*}',
|
|
'!node_modules/moment{,/**/*}',
|
|
'!node_modules/tldts{,/**/*}',
|
|
'!node_modules/polished{,/**/*}',
|
|
'!node_modules/caniuse-lite{,/**/*}',
|
|
'!node_modules/csso{,/**/*}',
|
|
'!node_modules/cheerio{,/**/*}',
|
|
'!node_modules/svgo{,/**/*}',
|
|
'!node_modules/@jimp{,/**/*}',
|
|
'!node_modules/jimp{,/**/*}',
|
|
'!node_modules/lit{,/**/*}',
|
|
'!node_modules/emoji-mart{,/**/*}',
|
|
'!node_modules/@mswjs{,/**/*}',
|
|
'!node_modules/graphql{,/**/*}',
|
|
'!node_modules/mermaid{,/**/*}',
|
|
'!node_modules/@lobehub{,/**/*}',
|
|
'!node_modules/@emoji-mart{,/**/*}',
|
|
'!node_modules/@arco-design{,/**/*}',
|
|
'!node_modules/lucide-react{,/**/*}',
|
|
'!node_modules/typescript{,/**/*}',
|
|
'!node_modules/@shikijs{,/**/*}',
|
|
'!node_modules/@vue{,/**/*}',
|
|
'!node_modules/@babel{,/**/*}',
|
|
'!node_modules/@mermaid-js{,/**/*}',
|
|
'!node_modules/@splinetool{,/**/*}',
|
|
'!node_modules/concurrently{,/**/*}',
|
|
'!node_modules/tailwindcss{,/**/*}',
|
|
'!node_modules/msw{,/**/*}',
|
|
'!node_modules/cytoscape{,/**/*}',
|
|
'!node_modules/cytoscape-fcose{,/**/*}',
|
|
'!node_modules/framer-motion{,/**/*}',
|
|
'!node_modules/katex{,/**/*}',
|
|
'!node_modules/rxjs{,/**/*}',
|
|
'!node_modules/langium{,/**/*}',
|
|
'!node_modules/openai{,/**/*}',
|
|
'!node_modules/@emotion{,/**/*}',
|
|
'!node_modules/d3{,/**/*}',
|
|
'!node_modules/vue{,/**/*}',
|
|
'!node_modules/vue-router{,/**/*}',
|
|
'!node_modules/vue-i18n{,/**/*}',
|
|
'!node_modules/pinia{,/**/*}',
|
|
'!node_modules/xgplayer{,/**/*}',
|
|
'!node_modules/wavesurfer.js{,/**/*}',
|
|
'!node_modules/showdown{,/**/*}',
|
|
'!node_modules/dompurify{,/**/*}',
|
|
'!node_modules/file-saver{,/**/*}',
|
|
'!node_modules/qrcode{,/**/*}',
|
|
'!node_modules/canvg{,/**/*}',
|
|
'!node_modules/svg2img{,/**/*}',
|
|
'!node_modules/svgtofont{,/**/*}',
|
|
'!node_modules/mddir{,/**/*}',
|
|
'!node_modules/@types{,/**/*}',
|
|
'!node_modules/vite{,/**/*}',
|
|
'!node_modules/vite-plugin-electron{,/**/*}',
|
|
'!node_modules/vite-plugin-electron-renderer{,/**/*}',
|
|
'!node_modules/@vitejs{,/**/*}',
|
|
'!node_modules/vue-tsc{,/**/*}',
|
|
'!node_modules/less{,/**/*}',
|
|
'!node_modules/postcss{,/**/*}',
|
|
'!node_modules/autoprefixer{,/**/*}',
|
|
'!node_modules/sass-embedded{,/**/*}',
|
|
'!node_modules/sass-embedded-win32-x64{,/**/*}',
|
|
'!node_modules/electron-builder{,/**/*}',
|
|
'!node_modules/app-builder-bin{,/**/*}',
|
|
'!node_modules/7zip-bin{,/**/*}',
|
|
'!node_modules/wait-on{,/**/*}',
|
|
];
|
|
|
|
if (config.win && Array.isArray(config.win.extraResources)) {
|
|
config.win.extraResources = config.win.extraResources
|
|
.filter(entry => !isLargeBundledResource(entry))
|
|
.map(entry => {
|
|
const from = String(entry && entry.from || '').replace(/\\/g, '/');
|
|
if (from.endsWith('packaging/resources') && Array.isArray(entry.filter)) {
|
|
return {
|
|
...entry,
|
|
filter: entry.filter
|
|
.filter(pattern => String(pattern).replace(/\\/g, '/') !== 'common/config/**/*')
|
|
.filter(pattern => String(pattern).replace(/\\/g, '/') !== 'common/cover-templates/**/*')
|
|
.filter(pattern => !String(pattern).replace(/\\/g, '/').startsWith('win-x86'))
|
|
.concat([
|
|
'common/config/default-templates.json',
|
|
'common/config/default-subtitle-templates.json',
|
|
'common/config/preset_templates.json',
|
|
'common/config/default-ipagent-config.json',
|
|
'common/config/system-templates.json',
|
|
'common/python-scripts/**/*',
|
|
'common/soundEffects/**/*',
|
|
'stickers/**/*',
|
|
])
|
|
.concat(oemCoverTemplateFiles)
|
|
};
|
|
}
|
|
if (from.endsWith('packaging/build-resources') && Array.isArray(entry.filter)) {
|
|
return {
|
|
...entry,
|
|
filter: entry.filter.filter(pattern => String(pattern).replace(/\\/g, '/') !== 'vc_redist.x64.exe'),
|
|
};
|
|
}
|
|
return entry;
|
|
});
|
|
}
|
|
|
|
if (Array.isArray(config.files)) {
|
|
config.files = config.files
|
|
.filter(entry => !(typeof entry === 'string' && entry.replace(/\\/g, '/') === 'node_modules'))
|
|
.concat(oemAsarExcludes);
|
|
}
|
|
|
|
if (config.win) {
|
|
config.win.target = [
|
|
{
|
|
target: 'dir',
|
|
arch: ['x64'],
|
|
},
|
|
];
|
|
}
|
|
|
|
if (config.nsis) {
|
|
config.nsis.differentialPackage = false;
|
|
}
|
|
|
|
fs.mkdirSync(path.dirname(outputPath), { recursive: true });
|
|
fs.writeFileSync(outputPath, JSON.stringify(config, null, 2), 'utf8');
|
|
console.log(`[oem-builder-config] wrote ${outputPath}`);
|