vue.config.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. const path = require("path");
  2. const TerserPlugin = require("terser-webpack-plugin");
  3. const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
  4. const WorkboxPlugin = require("workbox-webpack-plugin");
  5. const HappyPack = require("happypack");
  6. const webpack = require("webpack");
  7. function resolve(dir) {
  8. return path.join(__dirname, dir);
  9. }
  10. module.exports = {
  11. chainWebpack(config) {
  12. config.module.rule("svg").exclude.add(resolve("src/icons")).end();
  13. config.module
  14. .rule("icons")
  15. .test(/\.svg$/)
  16. .include.add(resolve("src/icons"))
  17. .end()
  18. .use("svg-sprite-loader")
  19. .loader("svg-sprite-loader")
  20. .options({
  21. symbolId: "icon-[name]",
  22. })
  23. .end();
  24. config.plugin("happypack").use(HappyPack, [
  25. {
  26. loaders: ["babel-loader"],
  27. },
  28. ]);
  29. // config.plugin('dll').use(webpack.DllPlugin, [
  30. // {
  31. // name: '[name]_library',
  32. // path: path.join(__dirname, 'dll', '[name]-manifest.json'),
  33. // },
  34. // ]);
  35. config.plugin("workbox").use(WorkboxPlugin.GenerateSW, [
  36. {
  37. clientsClaim: true,
  38. skipWaiting: true,
  39. },
  40. ]);
  41. },
  42. css: {
  43. loaderOptions: {
  44. postcss: {
  45. postcssOptions: {
  46. plugins: [require("tailwindcss"), require("autoprefixer")],
  47. },
  48. },
  49. },
  50. },
  51. devServer: {
  52. proxy: {
  53. "/api": {
  54. // target: "http://192.168.5.4:16200", // 石月
  55. target: "http://192.168.50.235:16200",
  56. // target: "http://106.120.102.238:16600",//外网
  57. changeOrigin: true,
  58. pathRewrite: {
  59. "^/api": "", // 需要rewrite重写的,
  60. },
  61. },
  62. },
  63. },
  64. configureWebpack: {
  65. resolve: {
  66. alias: {
  67. "@": resolve("src"),
  68. },
  69. },
  70. optimization: {
  71. usedExports: true,
  72. splitChunks: {
  73. chunks: "all",
  74. },
  75. minimize: true,
  76. minimizer: [new TerserPlugin(), new CssMinimizerPlugin()],
  77. },
  78. },
  79. };