webpack.config.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { dirname, join } from "path";
  2. import { exec } from "child_process";
  3. import { fileURLToPath } from "url";
  4. import MiniCssExtractPlugin from "mini-css-extract-plugin";
  5. import CssMinimizerPlugin from "css-minimizer-webpack-plugin";
  6. export default {
  7. entry: "./src/BetterYTM.user.ts",
  8. mode: "production",
  9. // optimization: {
  10. // minimize: false,
  11. // },
  12. module: {
  13. rules: [
  14. {
  15. test: /\.tsx?$/,
  16. use: "ts-loader",
  17. exclude: /node_modules/,
  18. },
  19. {
  20. test: /\.html$/i,
  21. loader: "html-loader",
  22. },
  23. {
  24. test: /\.md$/,
  25. use: [
  26. {
  27. loader: "html-loader",
  28. },
  29. {
  30. loader: "markdown-loader",
  31. },
  32. ],
  33. },
  34. {
  35. test: /.css$/,
  36. use: [MiniCssExtractPlugin.loader, "css-loader" /*, "sass-loader"*/],
  37. },
  38. // {
  39. // test: /\.css$/i,
  40. // use: "raw-loader",
  41. // },
  42. ],
  43. },
  44. optimization: {
  45. minimizer: [
  46. `...`,
  47. new CssMinimizerPlugin(),
  48. ],
  49. },
  50. plugins: [
  51. new MiniCssExtractPlugin(),
  52. {
  53. apply: (compiler) => {
  54. compiler.hooks.afterEmit.tap("AfterEmitPlugin", () => {
  55. exec("npm run post-build", (_err, stdout, stderr) => {
  56. stdout && process.stdout.write(stdout);
  57. stderr && process.stderr.write(stderr);
  58. });
  59. });
  60. },
  61. },
  62. ],
  63. resolve: {
  64. extensions: [".ts", ".js", ".css"],
  65. },
  66. output: {
  67. filename: "BetterYTM.user.js",
  68. path: join(dirname(fileURLToPath(import.meta.url)), "/dist"),
  69. },
  70. devtool: "source-map",
  71. };