vue.config.js 3.15 KB
let path = require("path");
const webpack = require("webpack");
const ThemeColorReplacer = require("webpack-theme-color-replacer");
const { getThemeColors, modifyVars } = require("./src/utils/themeUtil");
const { resolveCss } = require("./src/utils/theme-color-replacer-extend");
const CompressionWebpackPlugin = require("compression-webpack-plugin");
const productionGzipExtensions = ["js", "css"];
const isDev = process.env.NODE_ENV === "development";
const FileManagerPlugin = require("filemanager-webpack-plugin"); // 压缩文件夹
let plugins = [];
// 避免打本地启项目时自动打zip包
if (!isDev) {
  plugins.push(
    new FileManagerPlugin({
      events: {
        onEnd: {
          mkdir: ["./dist"],
          delete: ["./dist.zip"],
          archive: [{ source: "./dist", destination: "./dist.zip" }],
        },
      },
    })
  );
}
const assetsCDN = {
  // webpack build externals
  // externals: {
  //   vue: 'Vue',
  //   'vue-router': 'VueRouter',
  //   vuex: 'Vuex',
  //   axios: 'axios',
  //   nprogress: 'NProgress',
  //   clipboard: 'ClipboardJS',
  //   '@antv/data-set': 'DataSet',
  //   'js-cookie': 'Cookies'
  // },
  css: [],
  js: [
    "//cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js",
    "//cdn.jsdelivr.net/npm/vue-router@3.3.4/dist/vue-router.min.js",
    "//cdn.jsdelivr.net/npm/vuex@3.4.0/dist/vuex.min.js",
    "//cdn.jsdelivr.net/npm/axios@0.19.2/dist/axios.min.js",
    "//cdn.jsdelivr.net/npm/nprogress@0.2.0/nprogress.min.js",
    "//cdn.jsdelivr.net/npm/clipboard@2.0.6/dist/clipboard.min.js",
    "//cdn.jsdelivr.net/npm/@antv/data-set@0.11.4/build/data-set.min.js",
    "//cdn.jsdelivr.net/npm/js-cookie@2.2.1/src/js.cookie.min.js",
  ],
};

const BundleAnalyzerPlugin = require("webpack-bundle-analyzer")
  .BundleAnalyzerPlugin;
module.exports = {
  publicPath: "./",
  // 打包目录--多加一层dist打zip时候把dist外壳打进去
  outputDir: "dist/dist",
  devServer: {
    disableHostCheck: true,
    port: 8080,
    proxy: {
      "/api": {
        //此处要与 /services/api.js 中的 API_PROXY_PREFIX 值保持一致
        target: process.env.VUE_APP_API_BASE_URL,
        changeOrigin: true,
        pathRewrite: {
          "^/api": "",
        },
        // cookieDomainRewrite: 'localhost',
      },
    },
  },
  pluginOptions: {
    "style-resources-loader": {
      preProcessor: "less",
      patterns: [path.resolve(__dirname, "./src/theme/theme.less")],
    },
  },

  configureWebpack: {
    plugins: [
      //富文本改变图片大小插件
      new webpack.ProvidePlugin({
        "window.Quill": "quill/dist/quill.js",
        Quill: "quill/dist/quill.js",
      }),
      ...plugins,
      // 生产环境打包zip文件
      // new FileManagerPlugin({
      //   events: {
      //     onEnd: {
      //       mkdir: ["./dist"],
      //       delete: ["./dist.zip"],
      //       archive: [{ source: "./dist", destination: "./dist.zip" }],
      //     },
      //   },
      // }),
    ],
  },
  css: {
    loaderOptions: {
      less: {
        lessOptions: {
          modifyVars: modifyVars(),
          javascriptEnabled: true,
        },
      },
    },
  },
  assetsDir: "static",
  productionSourceMap: false,
};