import path from 'path';
import TerserPlugin from 'terser-webpack-plugin';
import { defineConfig } from 'umi';
import { appName } from './src/conf.json';
import routes from './src/routes';
const ESLintPlugin = require('eslint-webpack-plugin');
const RAGFLOW_BASE = process.env.RAGFLOW_BASE || '/';

export default defineConfig({
  title: appName,
  outputPath: 'dist',
  alias: { '@parent': path.resolve(__dirname, '../') },
  npmClient: 'pnpm',
  mfsu: false,
  base: RAGFLOW_BASE,
  routes,
  publicPath: RAGFLOW_BASE,
  esbuildMinifyIIFE: true,
  hash: true,
  favicons: ['/logo.svg'],
  headScripts: [{ src: '/iconfont.js', defer: true }],
  clickToComponent: {},
  history: {
    type: 'browser',
  },
  plugins: [
    '@react-dev-inspector/umi4-plugin',
  ],
  jsMinifier: 'none', // Fixed the issue that the page displayed an error after packaging lexical with terser
  lessLoader: {
    modifyVars: {
      hack: `true; @import "~@/less/index.less";`,
    },
  },
  // devtool: 'source-map',
  // Speed up dev startup by using cheaper source maps
  devtool: process.env.NODE_ENV === 'development'
    ? 'eval-cheap-module-source-map'
    : 'source-map',
  copy: [
    { from: 'src/conf.json', to: 'dist/conf.json' },
    { from: 'node_modules/monaco-editor/min/vs/', to: 'dist/vs/' },
  ],
  proxy: [
    // {
      // context: ['/api', '/v1'],
      // target: 'http://154.9.253.114:9380',
      // target: 'http://150.158.121.95',
      // changeOrigin: true,
      // ws: true,
      // logger: console,
      // pathRewrite: { '^/v1': '/v1' },
    // },
  ],

  chainWebpack(memo, args) {
    memo.module.rule('markdown').test(/\.md$/).type('asset/source');

    memo.optimization.minimizer('terser').use(TerserPlugin);
    // Fixed the issue that the page displayed an error after packaging lexical with terser

    // memo.plugin('eslint').use(ESLintPlugin, [
    //   {
    //     extensions: ['js', 'ts', 'tsx'],
    //     failOnError: true,
    //     exclude: ['**/node_modules/**', '**/mfsu**', '**/mfsu-virtual-entry**'],
    //     files: ['src/**/*.{js,ts,tsx}'],
    //   },
    // ]);
    return memo;
  },
});
