in packages/plugin-builtin/src/build.ts [53:93]
export default async function (api: PluginAPI, config: BuiltInConfig) {
const callback: (() => Promise<void>)[] = [];
debug('plugin:builtin', 'register build command');
api.registerSyncAPI('registerBeforeBuildStart', (fn: () => Promise<void>) => {
callback.push(fn);
});
api.registerCommand('build', options, async (opts) => {
for (const fn of callback) {
await fn();
}
// await api.emit('onBuildStart');
const buildEngineType = opts.engine || config.engine || 'webpack';
let builder = null;
if (config.webpack5) opts.webpack5 = true;
switch(buildEngineType) {
case 'webpack':
builder = buildByWebpack;
break;
case 'babel':
builder = buildByBabel;
break;
case 'rollup':
builder = buildByRollup;
break;
default:
error(`can't find build engine for ${buildEngineType}`);
return;
}
await builder(api, opts);
api.emit('onBuildEnd');
});
}