vue.config.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. const path = require("path");
  2. const resolve = (dir) => path.join(__dirname, dir);
  3. const proxy = {
  4. "/api/uq_basic": {
  5. target: process.env.VUE_APP_QUESTIONS_HOST_URL,
  6. changeOrigin: true,
  7. },
  8. };
  9. var webpack = require("webpack");
  10. var packageData = require("./package.json");
  11. var v = packageData.version;
  12. const timestamp = Date.now();
  13. let config = {
  14. // 这里设置项目的路径,比如 '/admin' 。设置以后 BASE_URL就有值了。
  15. // 注意这解决不了CDN的问题,CDN的问题要另行研究。
  16. // 可能的方案是另设一个替代 BASE_URL 的环境变量解决 <%%= BASE_URL %%>favicon.ico 和 ${process.env.BASE_URL}service-worker.js
  17. publicPath: "/admin",
  18. lintOnSave: process.env.NODE_ENV !== "production" ? true : "error",
  19. devServer: {
  20. proxy,
  21. // https://webpack.js.org/configuration/dev-server/#overlay
  22. client: {
  23. overlay: false,
  24. },
  25. },
  26. configureWebpack: {
  27. // devtool: "source-map", // for vscode debug
  28. plugins: [
  29. // Ignore all locale files of moment.js
  30. new webpack.IgnorePlugin({
  31. resourceRegExp: /^\.\/locale$/,
  32. contextRegExp: /moment$/,
  33. }),
  34. // new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
  35. ],
  36. },
  37. transpileDependencies: [/\bvue-awesome\b/],
  38. productionSourceMap: false,
  39. chainWebpack(config) {
  40. config.module.rule("svg").exclude.add(resolve("./src/assets/icons")).end();
  41. config.module
  42. .rule("icons")
  43. .test(/\.svg$/)
  44. .include.add(resolve("./src/assets/icons"))
  45. .end()
  46. .use("svg-sprite-loader")
  47. .loader("svg-sprite-loader")
  48. .options({
  49. symbolId: "icon-[name]",
  50. })
  51. .end();
  52. },
  53. css: {
  54. loaderOptions: {
  55. scss: {
  56. additionalData: `@import "@/assets/styles/variables.scss";`, // 不同版本的 sass,此属性不同:data、prependData、additionalData
  57. sassOptions: { outputStyle: "expanded" }, // fix: 解决 element-ui 图标 icon 偶现乱码问题
  58. },
  59. },
  60. },
  61. };
  62. if (process.env.NODE_ENV === "production") {
  63. config.css = Object.assign(config.css || {}, {
  64. extract: {
  65. filename: `css/[name].${v}.${timestamp}.css`,
  66. chunkFilename: `css/[name].${v}.${timestamp}.css`,
  67. },
  68. });
  69. config.configureWebpack = Object.assign(config.configureWebpack || {}, {
  70. output: {
  71. filename: `js/[name].${v}.${timestamp}.js`,
  72. chunkFilename: `js/[name].${v}.${timestamp}.js`,
  73. },
  74. });
  75. }
  76. module.exports = config;
  77. require("events").EventEmitter.defaultMaxListeners = 0;