·  阅读
// 执行npm run dev时报错: MaxListenersExceededWarning:Possible EventEmitter memory leak detected
require("events").EventEmitter.defaultMaxListeners = 50;
const { defineConfig } = require("@vue/cli-service");
const webpack = require("webpack");
//去除多余的console.log
const TerserPlugin = require("terser-webpack-plugin");
const path = require("path");
// 获取.env文件的环境变量
const dotenv = require("dotenv");
// 定向目录
const resolve = (dir) => path.join(__dirname, dir);
// 加载多环境的 .env 配置
dotenv.config({ path: `.env.${process.env.VUE_APP_NODE_ENV}` });
// 根据环境 build 不同的 proxy
const { api } = require("./api");
const API = api[process.env.VUE_APP_NODE_ENV];
const buildEnvApiProxy = () => {
  const PROXY = {};
  Object.keys(API).forEach((key) => {
    console.log(
      `环境====》${process.env.VUE_APP_NODE_ENV}`,
      "====>",
      API[key]
    const pathRewrite = {};
    pathRewrite[`^${key}`] = "";
    PROXY[`${key}`] = {
      target: API[key],
      changOrigin: true,
      pathRewrite: pathRewrite,
  return PROXY;
// 根据环境 build 不同的 plugins
const buildEnvPlugins = () => {
  const plugins = [];
  if (process.env.VUE_APP_NODE_ENV === "prod") {
    plugins.push(
      new TerserPlugin({
        terserOptions: {
          ecma: undefined,
          warnings: false,
          parse: {},
          compress: {
            drop_console: true,
            drop_debugger: true,
            pure_funcs: ["console.log"], // 移除console
  return plugins;
module.exports = defineConfig({
  publicPath: "/",
  outputDir: "dist",
  assetsDir: "static",
  transpileDependencies: true,
  pages: {
    index: {
      // page的入口文件
      entry: "src/main.ts",
      // 当使用 title 选项时,
      // template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
      title: "dsdsdddss",
  // 向 CSS 相关的 loader 传递选项
  css: {
    // 是否将组件中的 CSS 提取至一个独立的 CSS 文件中,当作为一个库构建时,你也可以将其设置为 false 免得用户自己导入 CSS
    // 默认生产环境下是 true,开发环境下是 false
    extract: false,
    // 是否为 CSS 开启 source map。设置为 true 之后可能会影响构建的性能
    sourceMap: false,
    /*为预处理器 loader 传递自定义选项*/
    loaderOptions: {
      sass: {
        additionalData: `@import "@/assets/scss/_variable.scss";`, // 预设全局css变量
      css: {
        // 这里的选项会传递给 css-loader
      postcss: {
        // 这里的选项会传递给 postcss-loader
  chainWebpack: (config) => {
    // 修复热更新失效
    config.resolve.symlinks(true);
    config.resolve.alias // 添加别名
      .set("@", resolve("src"))
      .set("@assets", resolve("src/assets"))
      .set("@components", resolve("src/components"))
      .set("@views", resolve("src/views"))
      .set("@store", resolve("src/store"))
      .set("@router", resolve("src/router"))
      .set("@utils", resolve("src/utils"));
  devServer: {
    host: "127.0.0.1",
    port: 8888,
    proxy: buildEnvApiProxy(),
  configureWebpack: {
    devtool: "eval-source-map",
    plugins: [
      new webpack.DefinePlugin({
      ...buildEnvPlugins(),

需要结合 dotenv, cross-env, .env

package.json

image.png

分类:
前端
标签: