vue.config.js 1.6 KB

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