dev.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import Webpack from 'webpack';
  2. import WebpackDevServer from 'webpack-dev-server';
  3. import webpackConfig from '../config/webpack.config.ts';
  4. import chalk from 'chalk';
  5. import {
  6. clearConsole,
  7. startedServerLogger,
  8. errorLogger,
  9. junglePort,
  10. } from './utils.ts';
  11. const isInteractive = process.stdout.isTTY;
  12. const {host, port: defaultPort} = webpackConfig.devServer!;
  13. function start(port: number) {
  14. const devServerOptions = {...webpackConfig.devServer, port};
  15. const compiler = Webpack(webpackConfig as any);
  16. const {host} = devServerOptions;
  17. const server = new WebpackDevServer(compiler, devServerOptions);
  18. console.log(chalk.hex('#065279')('Starting dev server...'));
  19. server.startCallback(function(err) {
  20. if (err) {
  21. return errorLogger('Dev server start error');
  22. }
  23. isInteractive && clearConsole();
  24. startedServerLogger(port, host);
  25. });
  26. }
  27. junglePort(host!, defaultPort as number)
  28. .then(function(port: any) {
  29. if (!port) {
  30. return;
  31. }
  32. start(port);
  33. })
  34. .catch(function(err: Error) {
  35. err && err.message && console.log(err.message);
  36. process.exit(1);
  37. });