/// import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' import viteTsconfigPaths from 'vite-tsconfig-paths' import macrosPlugin from 'vite-plugin-babel-macros' import svgrPlugin from 'vite-plugin-svgr' import path from 'path' import rollupPolyfillNode from 'rollup-plugin-polyfill-node' // fix error on react-virtualized (https://github.com/bvaughn/react-virtualized/issues/1212#issuecomment-893591870) const resolveFixup = { name: 'resolve-fixup', setup(build) { build.onResolve({ filter: /react-virtualized/ }, async () => { return { path: path.resolve( './node_modules/react-virtualized/dist/umd/react-virtualized.js' ), } }) }, } // used to dinamically change envs-config.js path on index.html (based on: https://github.com/vitejs/vite/discussions/12242#discussioncomment-5162831) const transformHtmlPlugin = (data) => ({ name: 'transform-html', transformIndexHtml: { enforce: 'pre' as any, transform(html) { return html.replace(/%\s*(\w+)\s*%/gi, (_, p1) => data[p1] || '') }, }, }) const env = process.env.NODE_ENV !== 'production' ? '' : '/aluno' export default defineConfig({ plugins: [ react(), viteTsconfigPaths(), svgrPlugin(), macrosPlugin(), transformHtmlPlugin({ BASE_PATH: env }), ], server: { open: true, port: 3000, }, build: { rollupOptions: { plugins: [ // Enable rollup polyfills plugin used in production bundling, refer to https://stackoverflow.com/a/72440811/10752354 rollupPolyfillNode(), ], }, commonjsOptions: { transformMixedEsModules: true }, // fix: require is not defined https://github.com/vitejs/vite/issues/3409#issuecomment-1138202247 }, optimizeDeps: { esbuildOptions: { plugins: [resolveFixup], }, }, resolve: { alias: [ { find: 'react-infinite-scroller', replacement: 'react-infinite-scroller/index.js', }, { find: 'react-native', replacement: 'react-native-web', }, { find: /^~/, replacement: '' }, // works with ~ in less files (https://github.com/vitejs/vite/issues/2185) { find: './runtimeConfig', replacement: './runtimeConfig.browser', // ensures browser compatible version of AWS JS SDK is used (https://ui.docs.amplify.aws/react/getting-started/usage/vite) }, { find: '@ant-design/icons/lib/dist', replacement: '@ant-design/icons/lib/index.es.js', // fix build error (https://github.com/ant-design/ant-design/issues/19002#issuecomment-965958565) }, ], }, base: '/aluno', test: { globals: true, environment: 'jsdom', setupFiles: './src/setupTests.ts', exclude: [ 'node_modules', './src/setupTests.ts', './src/**/*.skip.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}', ], include: ['./src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'], coverage: { reporter: ['text', 'html', 'lcov'], exclude: ['node_modules/', './src/setupTests.ts'], }, }, })