vue.config.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. const path = require("path");
  2. // 引入打包分析文件
  3. const { BundleAnalyzerPlugin } = require("webpack-bundle-analyzer");
  4. // 引入Gzip压缩文件
  5. const CompressionPlugin = require("compression-webpack-plugin");
  6. // 引入js打包工具
  7. const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
  8. const resolve = dir => path.join(__dirname, dir);
  9. const { NODE_ENV, OUT_PUT } = process.env;
  10. module.exports = {
  11. outputDir: OUT_PUT,
  12. lintOnSave: false,
  13. publicPath: NODE_ENV === "production" ? "/" : "/",
  14. runtimeCompiler: true,
  15. productionSourceMap: false, //关闭生产环境下的SourceMap映射文件
  16. chainWebpack: (config) => {
  17. config.resolve.alias
  18. .set('@', resolve('src'))
  19. .set("scss_vars", "@/styles/vars.scss")
  20. .set("index_scss", "@/styles/index.scss")
  21. .set("api", "@/api")
  22. .set("utils", "@/utils")
  23. .set("components", "@/components")
  24. .set("common", "@/common");
  25. config.resolve.extensions.add(".js").add(".vue").add(".json");
  26. },
  27. configureWebpack: (config) => {
  28. config.output.filename = "js/[name].[hash].js";
  29. config.output.chunkFilename = "js/[id].[hash].js";
  30. config.optimization = {
  31. usedExports: true,
  32. };
  33. config.externals = {
  34. luckysheet: "luckySheet",
  35. };
  36. const pluginsPro = [
  37. // new CompressionPlugin({
  38. // algorithm: "gzip",
  39. // test: /\.js$|\.html$|\.css$/, // 匹配文件名
  40. // minRatio: 0.8, // 压缩率小于1才会压缩
  41. // threshold: 10240, // 对超过10k的数据压缩
  42. // deleteOriginalAssets: false, // 是否删除未压缩的源文件,谨慎设置,如果希望提供非gzip的资源,可不设置或者设置为false(比如删除打包后的gz后还可以加载到原始资源文件)
  43. // }),
  44. new UglifyJsPlugin({
  45. uglifyOptions: {
  46. compress: {
  47. drop_debugger: true,
  48. drop_console: true, //生产环境自动删除console
  49. pure_funcs: ["console.log"], //移除console
  50. },
  51. },
  52. sourceMap: false,
  53. parallel: true, //使用多进程并行运行来提高构建速度。默认并发运行数:os.cpus().length - 1。
  54. }),
  55. ];
  56. if (NODE_ENV === "production") {
  57. config.plugins = [...config.plugins, ...pluginsPro];
  58. }
  59. },
  60. devServer: {
  61. port: "3030",
  62. open: false,
  63. proxy: {
  64. "/adminapi": {
  65. target: "http://8.136.199.33:7778",
  66. // target: "http://8.136.199.33:8602",
  67. changeOrigin: true, //允许跨域
  68. pathRewrite: {
  69. "^/adminapi": "/adminapi",
  70. },
  71. },
  72. },
  73. },
  74. };