TerminalPrintPlugin.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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(
  17. `http://${localIPv4!}:${port}${publicPath}`
  18. )}`
  19. );
  20. console.log(`- 作者微信: ${chalk.cyan(`shuisheng9905`)}`);
  21. console.log(
  22. `- 付费课程: ${chalk.cyan(`https://www.hsslive.cn/article/151`)}`
  23. );
  24. console.log(
  25. `- 私有化部署: ${chalk.cyan(
  26. `https://live.hsslive.cn/privatizationDeployment`
  27. )}`
  28. );
  29. console.log(
  30. `- 欢迎PR: ${chalk.cyan(
  31. `billd-live目前只有作者一人开发,难免有不足的地方,欢迎提PR或Issue`
  32. )}`
  33. );
  34. console.log();
  35. callback();
  36. });
  37. }
  38. }
  39. export default TerminalPrintPlugin;