TerminalPrintPlugin.ts 823 B

123456789101112131415161718192021222324252627
  1. import chalk from 'chalk';
  2. import { Compiler } from 'webpack';
  3. import WebpackDevServer from 'webpack-dev-server';
  4. const localIPv4 = WebpackDevServer.internalIPSync('v4');
  5. class TerminalPrintPlugin {
  6. constructor() {}
  7. apply(compiler: Compiler) {
  8. compiler.hooks.done.tapAsync('TerminalPrintPlugin', (stats, callback) => {
  9. const publicPath = stats.compilation.outputOptions.publicPath as string;
  10. const port = stats.compilation.options.devServer!.port as number;
  11. console.log(' App running at:');
  12. console.log(
  13. `- Local: ${chalk.cyan(`http://localhost:${port}${publicPath}`)}`
  14. );
  15. console.log(
  16. `- Network: ${chalk.cyan(`http://${localIPv4!}:${port}${publicPath}`)}`
  17. );
  18. console.log();
  19. callback();
  20. });
  21. }
  22. }
  23. export default TerminalPrintPlugin;