import pkg from './package.json'; import react from '@vitejs/plugin-react'; import svgr from 'vite-plugin-svgr'; import {defineConfig} from 'vitest/config'; import {resolve} from 'path'; const outputFileName = pkg.name[0] === '@' ? pkg.name.slice(pkg.name.indexOf('/') + 1) : pkg.name; // https://vitejs.dev/config/ export default (function viteConfig() { return defineConfig({ plugins: [ svgr(), react() ], define: { 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV), 'process.env.VITEST_SEGFAULT_RETRY': 3 }, preview: { port: 4174 }, build: { minify: true, sourcemap: true, cssCodeSplit: true, lib: { entry: resolve(__dirname, 'src/index.tsx'), name: pkg.name, fileName(format) { if (format === 'umd') { return `${outputFileName}.umd.js`; } return `${outputFileName}.js`; } }, rollupOptions: { external: ['react', 'react-dom'], output: { globals: { react: 'React', 'react-dom': 'ReactDOM' } } }, commonjsOptions: { include: [/packages/, /node_modules/] } }, test: { globals: true, // required for @testing-library/jest-dom extensions environment: 'jsdom', setupFiles: './test/test-setup.js', include: ['./test/unit/*'], testTimeout: process.env.TIMEOUT ? parseInt(process.env.TIMEOUT) : 10000, ...(process.env.CI && { // https://github.com/vitest-dev/vitest/issues/1674 minThreads: 1, maxThreads: 2 }) } }); });