TerminalPrintPlugin.ts 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  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(`- 作者微信: ${chalk.cyan(`shuisheng9905`)}`);
  19. console.log(
  20. `- 付费课程: ${chalk.cyan(`https://www.hsslive.cn/article/151`)}`
  21. );
  22. console.log(
  23. `- 欢迎PR: ${chalk.cyan(
  24. `billd-live目前只有作者一人开发,难免有不足的地方,欢迎提PR或Issue`
  25. )}`
  26. );
  27. console.log();
  28. callback();
  29. });
  30. }
  31. }
  32. export default TerminalPrintPlugin;