import {defineConfig} from 'vite';
import react from '@vitejs/plugin-react';
import path from 'path';
import svgr from 'vite-plugin-svgr';
import monacoEditorPlugin from 'vite-plugin-monaco-editor';
import replace from '@rollup/plugin-replace';
import fis3 from './scripts/fis3plugin';
import markdown from './scripts/markdownPlugin';
// import mockApi from './scripts/mockApiPlugin';
import transformMobileHtml from './scripts/transformMobileHtml';
// import babel from 'vite-plugin-babel';
// import i18nPlugin from 'plugin-react-i18n';
// import i18nConfig from './i18nConfig';
import ViteCommonJs from 'vite-plugin-commonjs';
// import Legacy from '@vitejs/plugin-legacy';
var I18N = process.env.I18N;

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    // I18N && i18nPlugin(i18nConfig),
    // babel(),
    fis3(),
    ViteCommonJs(),
    markdown(),
    // Legacy({ targets: ['defaults', 'not IE 11'] }),
    // mockApi(),
    transformMobileHtml(),

    react({
      babel: {
        parserOpts: {
          plugins: ['decorators-legacy', 'classProperties']
        }
      }
    }),
    svgr({
      exportAsDefault: true,
      svgrOptions: {
        svgProps: {
          className: 'icon'
        },
        prettier: false,
        dimensions: false
      }
    }),
    monacoEditorPlugin({}),
    replace({
      // include: ['node_modules/amis-formula'],

      __editor_i18n: !!I18N,
      preventAssignment: true
    })
  ].filter(n => n),
  // base: '/',
  css: {
    preprocessorOptions: {
      scss: {
        // 用~ 表示node_modules，解决一些依赖在运行的时候报 Missing './dist/office.css' specifier in 'office-viewer' package
        additionalData: `
          @import '~/codemirror/lib/codemirror.css';
          @import '~/froala-editor/css/froala_style.min.css';
          @import '~/froala-editor/css/froala_editor.pkgd.min.css';
          @import '~/tinymce/skins/ui/oxide/skin.css';
          @import '~/video-react/dist/video-react.css';
          @import '~/cropperjs/dist/cropper.css';
          @import '~/office-viewer/dist/office.css';
          `,
          javascriptEnabled: true
          // @import './src/components/calendar/react-datetime/css/react-datetime.css';
        // includePaths: ['node_modules', './src/**', './scss']
      }
    }
  },
  optimizeDeps: {
    // include: ['lodash'],
    exclude: ['node_modules'],
    esbuildOptions: {
      target: 'esnext',
    },
    force: true
  },
  publicDir: false,
  // root:'/',
  build: {
    rollupOptions: {
      input: {
        main: path.resolve(__dirname, './index.html')
      },
    }
  },
  // build: {
  //   commonjsOptions: {
  //     include: ['/node_modules/lodash'],
  //     // defaultIsModuleExports: false,
  //   }
  // },
  server: {
    host: '0.0.0.0',
    port: 8888,
    // open: true,
    strictPort: false,
    watch: {
      ignored: ['public/**']
    }
  },
  resolve: {
    alias: [
      {
        find: 'moment/locale',
        replacement: 'moment/dist/locale'
      },
      {
        find: '~',
        replacement: path.resolve(__dirname, 'node_modules')
      }
      // {
      //   find: 'amis-formula/lib',
      //   replacement: path.resolve(__dirname, './packages/amis-formula/src')
      // },
      // {
      //   find: 'amis-formula',
      //   replacement: path.resolve(__dirname, './packages/amis-formula/src')
      // },
      // {
      //   find: 'lodash',
      //   replacement: path.resolve(__dirname, 'node_modules/lodash-es')
      // },
      // {
      //   find: '@types/lodash',
      //   replacement: path.resolve(__dirname, 'node_modules/@types/lodash-es')
      // },
      // {
      //   find: 'amis-ui/lib',
      //   replacement: path.resolve(__dirname, './packages/amis-ui/src')
      // },
      // {
      //   find: 'amis-ui',
      //   replacement: path.resolve(__dirname, './packages/amis-ui/src')
      // },
      // {
      //   find: 'amis-core',
      //   replacement: path.resolve(__dirname, './packages/amis-core/src')
      // },
      // {
      //   find: 'amis/lib',
      //   replacement: path.resolve(__dirname, './packages/amis/src')
      // },
      // {
      //   find: 'amis/schema.json',
      //   replacement: path.resolve(__dirname, './packages/amis/schema.json')
      // },
      // {
      //   find: 'amis',
      //   replacement: path.resolve(__dirname, './packages/amis/src')
      // },
      // {
      //   find: 'amis-editor',
      //   replacement: path.resolve(__dirname, './packages/amis-editor/src')
      // },
      // {
      //   find: 'amis-editor-core',
      //   replacement: path.resolve(__dirname, './packages/amis-editor-core/src')
      // },
      // {
      //   find: 'office-viewer',
      //   replacement: path.resolve(__dirname, './packages/office-viewer/src')
      // },
      // {
      //   find: 'amis-theme-editor-helper',
      //   replacement: path.resolve(
      //     __dirname,
      //     './packages/amis-theme-editor-helper/src'
      //   )
      // }
    ]
  }
});
