1
wankeda
2026-03-16 d5538af4a0bbc5511990aceb3431fb1caa9bbc65
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSClient/vue.config.js
@@ -1,59 +1,103 @@
// const webpack = require("webpack");
// vue.config.js - é€‚配 Webpack 4 çš„版本
const path = require('path');
module.exports = {
  productionSourceMap: false,
  lintOnSave: false,
  // è½¬è¯‘这些包
  transpileDependencies: [
    'vue-router',
    'vue-draggable-next',
    'vuex',
    'element-plus'
  ],
  devServer: {
    port: 8080,
    overlay: {
      warning: false,
      errors: false
    }
    overlay: false,
    hot: true
  },
  css: {
    //查看CSS属于哪个css文件
    sourceMap: true
  },
  configureWebpack: {
    module: {
      rules: [
        // å¤„理 .mjs æ–‡ä»¶ - ç®€åŒ–版本,移除 fullySpecified
        {
          test: /\.mjs$/,
          include: /node_modules/,
          type: "javascript/auto"
          type: 'javascript/auto'
        },
        {
          test: /\.s[ac]ss$/,
          use: [
            'sass-loader'
          ]
          use: ['sass-loader']
        }
      ]
    },
    resolve: {
      extensions: ['.js', '.vue', '.json', '.mjs'],
      // Webpack 4 ä¸æ”¯æŒ fullySpecified,移除或改为其他方式
      mainFields: ['module', 'main']  // ä¼˜å…ˆä½¿ç”¨ ES æ¨¡å—
    }
  },
  //https://cli.vuejs.org/zh/guide/html-and-static-assets.html#html
  chainWebpack: (config) => {
    // ç§»é™¤ prefetch æ’ä»¶
    config.plugins.delete('prefetch');
    //自下定义title
    config.plugin('html').tap((args) => {
      args[0].title = 'WMS';
      return args;
    });
    // æˆ–者
    // ä¿®æ”¹å®ƒçš„选项:
    // config.plugin('prefetch').tap(options => {
    //   options[0].fileBlacklist = options[0].fileBlacklist || []
    //   options[0].fileBlacklist.push(/myasyncRoute(.)+?\.js$/)
    //   return options
    // })
    // ========== ä¿®å¤ Webpack 4 å…¼å®¹æ€§ ==========
    // 1. åˆ é™¤æœ‰é—®é¢˜çš„规则(如果存在)
    config.module.rules.delete('mjs');
    // 2. åˆ›å»ºç®€åŒ–çš„ .mjs å¤„理规则
    config.module
      .rule('mjs')
      .test(/\.mjs$/)
      .include
        .add(/node_modules\/vue-router/)
        .add(/node_modules\/vue-draggable-next/)
        .add(/node_modules\/element-plus/)
        .end()
      .type('javascript/auto');
    // 3. é…ç½® JS æ–‡ä»¶å¤„理
    config.module
      .rule('js')
      .test(/\.js$/)
      .include
        .add(path.resolve(__dirname, 'src'))
        .add(/node_modules\/vue-router/)
        .add(/node_modules\/vue-draggable-next/)
        .add(/node_modules\/element-plus/)
        .add(/node_modules\/vuex/)
        .end()
      .use('babel-loader')
        .loader('babel-loader')
        .options({
          cacheDirectory: true,
          presets: [
            ['@babel/preset-env', {
              targets: {
                browsers: ['> 1%', 'last 2 versions', 'not dead'],
                node: '16.0.0'
              },
              modules: 'commonjs'  // Webpack 4 éœ€è¦ commonjs
            }]
          ],
          plugins: [
            // å¤„理可选链操作符
            '@babel/plugin-proposal-optional-chaining',
            // å¤„理空值合并操作符
            '@babel/plugin-proposal-nullish-coalescing-operator'
          ]
        });
  }
  // configureWebpack: {
  //     plugins: [
  //         new webpack.optimize.MinChunkSizePlugin({
  //             minChunkSize: 100000 // é€šè¿‡åˆå¹¶å°äºŽ minChunkSize å¤§å°çš„ chunk,将 chunk ä½“积保持在指定大小限制以上
  //         })
  //     ]
  // }
};
};