vue.config.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. const prodConfig = require("./prod.config");
  2. module.exports = {
  3. publicPath: process.env.VUE_APP_PUB_URL,
  4. assetsDir: prodConfig.assetsDir,
  5. productionSourceMap: false,
  6. devServer: {
  7. // * 接口跨域处理
  8. proxy: {
  9. "/api": {
  10. target: process.env.PROXY_API_URL,
  11. changeOrigin: true,
  12. },
  13. },
  14. disableHostCheck: true,
  15. },
  16. css: {
  17. sourceMap: false,
  18. loaderOptions: {
  19. scss: {
  20. prependData: `@import "~@/scss/variables.scss";`,
  21. },
  22. less: {
  23. lessOptions: {
  24. modifyVars: {
  25. "primary-color": "#39a4ff",
  26. "link-color": "#39a4ff",
  27. },
  28. javascriptEnabled: true,
  29. },
  30. },
  31. },
  32. },
  33. configureWebpack: {
  34. devtool: "source-map",
  35. externals: prodConfig.externals,
  36. optimization: prodConfig.optimization,
  37. plugins: prodConfig.plugins,
  38. resolve: {
  39. extensions: [".js", ".vue", ".json", ".ts"],
  40. },
  41. performance: {
  42. hints: false,
  43. },
  44. },
  45. chainWebpack: (config) => {
  46. // * 移除prefetch和preload
  47. config.plugins.delete("prefetch");
  48. config.plugins.delete("preload");
  49. if (process.env.NODE_ENV === "production") {
  50. // config.entry("index").add("babel-polyfill");
  51. prodConfig.uploadAssetsToOSS(config);
  52. // prodConfig.assetsGzip(config);
  53. config.optimization.delete("splitChunks");
  54. config.plugin("html").tap((args) => {
  55. // 加上属性引号
  56. args[0].minify.removeAttributeQuotes = false;
  57. args[0].cdn = prodConfig.cdns.build;
  58. return args;
  59. });
  60. }
  61. },
  62. };