export default async()

in packages/plugin-webpack/src/start.ts [9:44]


export default async (api: PluginAPI, opts: PluginAPIOpt, serverMiddleWares: express.RequestHandler[]) => {
  const { webpack, disableHmr } = opts;
  let config = webpackConfigure(api, opts);

  if (isFunction(webpack)) {
    config = webpack(config, getEnv());
  }
  // @ts-ignore
  const { devServer = {} } = config;
  if (!disableHmr) {
    // @ts-ignore
    webpackDevServer.addDevServerEntrypoints(config, devServer);
  }
  const compiler = createCompiler(config);

  const { devServerOpt } = opts;

  const devServerConfig: webpackDevServer.Configuration = Object.assign({}, devServer, devServerOpt);

  const originBefore = devServerConfig.before;
  devServerConfig.before = (app, server, compiler) => {
    for (const middleware of serverMiddleWares) {
      app.use(middleware);
    }
    if (originBefore) {
      originBefore(app, server, compiler);
    }
  };

  const server = createServer(compiler, devServerConfig);
  await runServer(server, devServerConfig);
  api.emit('onServerRunning');
  if (opts.onServerRunning) {
    opts.onServerRunning(server);
  }
};