vue.config.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. sass: {
  50. additionalData: `
  51. @import "@/styles/global.scss";
  52. `,
  53. },
  54. },
  55. },
  56. devServer: {
  57. proxy: {
  58. "/api": {
  59. // target: "http://192.168.5.4:16200", // 石月
  60. // target: "http://192.168.50.235:16200", //内网
  61. target: "http://106.120.102.238:16600",//外网
  62. changeOrigin: true,
  63. pathRewrite: {
  64. "^/api": "", // 需要rewrite重写的,
  65. },
  66. },
  67. },
  68. },
  69. configureWebpack: {
  70. resolve: {
  71. alias: {
  72. "@": resolve("src"),
  73. },
  74. },
  75. optimization: {
  76. usedExports: true,
  77. splitChunks: {
  78. chunks: "all",
  79. },
  80. minimize: true,
  81. minimizer: [new TerserPlugin(), new CssMinimizerPlugin()],
  82. },
  83. },
  84. };