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;