Files
2025-11-14 11:39:33 +08:00

32 lines
1.3 KiB
JavaScript

const path = require('path');
const { generateAsset } = require('./utils');
// App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果。
class RunDefaultAppPlugin {
apply (compiler) {
compiler.hooks.emit.tapPromise('RunDefaultAppPlugin', compilation => {
return new Promise((resolve, reject) => {
try {
// debugger
const appJsInfo = compilation.assets["app.js"];
if (!appJsInfo) {
console.error('independent.error', 'invalid runDefaultApp');
resolve();
return;
}
const appSource = appJsInfo.source();
// App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果。
const runApp = 'if(getApp && !getApp()){ App({}) }';
compilation.assets["app.js"] = generateAsset(`${appSource};${runApp}`);
resolve();
} catch (e) {
console.error('independent.error', 'RunDefaultAppPlugin', e);
reject(e);
}
});
});
}
}
module.exports = RunDefaultAppPlugin;