vue.config.js 3.9 KB

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