const path = require('path');
const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin');

module.exports = {
  devServer: {
    headers: {
      'Access-Control-Allow-Origin': '*',
    },
    proxy: {
      '/automation': {
        target: 'http://10.44.179.147:8288',
        ws: false,
        changeOrigin: true,
        pathRewrite: {
          // '^/automation': '',
        },
      },
    },
    port: 4032,
    host: '0.0.0.0',
  },
  // 静态资源
  publicPath: process.env.NODE_ENV === 'development' ? '/' : './',
  outputDir: 'ismp-automation-web',
  assetsDir: 'static/',
  indexPath: 'index.html',
  filenameHashing: true,
  // 关闭默认的vue-cli-service lint功能,下方plugins中手动配置,以处理eslint9时编译报错的问题
  lintOnSave: true,
  // 新增:配置 CSS 预处理器(解决 less 内联 JS 问题)
  css: {
    loaderOptions: {
      less: {
        // 兼容 less-loader 不同版本的配置写法
        lessOptions: {
          javascriptEnabled: true
        }
      }
    }
  },
  chainWebpack: (config) => {
    config.resolve.symlinks(true);
  
    // 1. 清除默认 SVG 规则
    config.module.rule('svg').exclude.add(path.resolve(__dirname, 'src/assets/icons')).end();

    // 2. 修复 loader 配置格式错误(原写法会导致报错)
    config.module
      .rule('svg-sprite')
      .test(/\.svg$/)
      .include.add(path.resolve(__dirname, 'src/assets/icons'))
      .end()
      .use('svg-sprite-loader') // 每个 loader 单独用 use 配置
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]', // 核心:生成 #icon-文件名 标识
      })
      .end();
    // 🔥 移除 svgo-loader 配置(避免插件格式报错)
  },
  configureWebpack: {
    // 把 resolve 配置移到这里(Vue CLI 规范要求)
    resolve: {
      alias: {
        '@logicflow/core': path.resolve(__dirname, 'node_modules/@logicflow/core'),
        '@logicflow/extension': path.resolve(__dirname, 'node_modules/@logicflow/extension')
      }
    },
    output: {
      //资源打包路径
      library: 'vueApp',
      libraryTarget: 'umd',
    },
    plugins: [
      new MonacoWebpackPlugin({
        // 配置需要支持的语言
        languages: ['javascript', 'typescript', 'python', 'java', 'csharp', 'cpp', 'html', 'css', 'json', 'shell', 'sql'],
        // 减少打包体积
        features: ['coreCommands', 'find'],
      })
    ],
  },
};