vue.config.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. const CompressionWebpackPlugin = require("compression-webpack-plugin");
  2. const { transformElementScss } = require("ele-admin/lib/utils/dynamic-theme");
  3. const path = require("path");
  4. const { name } = require("./package.json");
  5. function resolve(dir) {
  6. return path.join(__dirname, dir);
  7. }
  8. const publicPath = process.env.VUE_APP_PUBLIC_PATH || "/oa-pc/";
  9. module.exports = {
  10. publicPath,
  11. lintOnSave: false,
  12. productionSourceMap: false,
  13. configureWebpack: {
  14. performance: {
  15. maxAssetSize: 2000000,
  16. maxEntrypointSize: 2000000,
  17. },
  18. output: {
  19. // 把子应用打包成 umd 库格式
  20. library: {
  21. type: "umd",
  22. name: `${name}`,
  23. },
  24. chunkLoadingGlobal: `webpackJsonp_${name}`,
  25. },
  26. },
  27. devServer: {
  28. open: [publicPath],
  29. historyApiFallback: {
  30. index: path.posix.join(publicPath, "index.html"),
  31. },
  32. setupMiddlewares(middlewares) {
  33. middlewares.unshift({
  34. name: "redirect-to-app",
  35. middleware(req, res, next) {
  36. const url = (req.url || "").split("?")[0];
  37. if (url === "/" || url === "/oa" || url === "/oa/") {
  38. res.redirect(publicPath);
  39. return;
  40. }
  41. next();
  42. },
  43. });
  44. return middlewares;
  45. },
  46. // 代理跨域的配置
  47. proxy: {
  48. // 当我们的本地的请求 有/api的时候,就会代理我们的请求地址向另外一个服务器发出请求
  49. "/api": {
  50. // target: 'http://192.168.1.3:18086',
  51. // target: 'http://192.168.1.158:18086',
  52. // target: 'http://192.168.1.176:18086',
  53. // target: "http://192.168.1.125:18086",
  54. // target: 'http://192.168.1.251:51005',
  55. // target: 'http://192.168.1.251:18186',
  56. // target: 'http://192.168.1.251:18086', // 服务器
  57. // target: 'http://192.168.1.251:18186',
  58. // target: 'http://192.168.1.3:18086',
  59. // target: 'http://192.168.1.251:18186', // 测试环境
  60. // target: 'http://192.168.1.251:18087',
  61. // target: 'http://192.168.1.116:18086',
  62. // target: 'http://192.168.1.125:18086',
  63. // target: 'http://192.168.1.11:18086', // 开发
  64. // target: 'http://192.168.1.116:18086', // 赵沙金
  65. // target: 'http://aiot.zoomwin.com.cn:51001/api',
  66. // target: 'http://f222326r53.imwork.net',
  67. // target: 'http://aiot.zoomwin.com.cn:51005/api',
  68. target: 'http://192.168.1.147:18086',
  69. changeOrigin: true, // 只有这个值为true的情况下 才表示开启跨域
  70. pathRewrite: {
  71. "^/api": "",
  72. },
  73. },
  74. },
  75. headers: {
  76. "Access-Control-Allow-Origin": "*",
  77. },
  78. },
  79. chainWebpack(config) {
  80. config.plugins.delete("prefetch");
  81. // set svg-sprite-loader
  82. // config.module.rule('svg').exclude.add(resolve('./src/icons')).end();
  83. // config.module
  84. // .rule('icons')
  85. // .test(/\.svg$/)
  86. // .include.add(resolve('./src/icons'))
  87. // .end()
  88. // .use('svg-sprite-loader')
  89. // .loader('svg-sprite-loader')
  90. // .options({
  91. // symbolId: 'icon-[name]'
  92. // })
  93. // .end();
  94. config.module.rule("svg").exclude.add(resolve("src/icons")).end();
  95. config.module
  96. .rule("icons")
  97. .test(/\.svg$/)
  98. .include.add(resolve("src/icons"))
  99. .end()
  100. .use("svg-sprite-loader")
  101. .loader("svg-sprite-loader")
  102. .options({
  103. symbolId: "icon-[name]",
  104. })
  105. .end();
  106. if (process.env.NODE_ENV !== "development") {
  107. // gzip 压缩
  108. config.plugin("compressionPlugin").use(
  109. new CompressionWebpackPlugin({
  110. test: /\.(js|css|html)$/,
  111. threshold: 10240,
  112. }),
  113. );
  114. }
  115. },
  116. css: {
  117. loaderOptions: {
  118. sass: {
  119. sassOptions: {
  120. outputStyle: "expanded",
  121. importer: transformElementScss(),
  122. },
  123. },
  124. },
  125. },
  126. };