export default async function()

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');
  });
}