vite.config.mjs (61 lines of code) (raw):

import {defineConfig} from 'vite' import react from '@vitejs/plugin-react' import dynamicImport from 'vite-plugin-dynamic-import' import commonjs from 'vite-plugin-commonjs' import browserslistToEsbuild from 'browserslist-to-esbuild' import {patchCssModules} from 'vite-css-modules' function allowJetBrainsIcons(id) { if (id.includes('/node_modules/@jetbrains/icons/')) { return true } return undefined } export default defineConfig(({command}) => ({ plugins: [ react({ babel: { plugins: [ [ 'babel-plugin-react-compiler', { target: '18', // should be the minimal supported version from peerDependencies panicThreshold: 'all_errors', }, ], ], }, }), patchCssModules({generateSourceTypes: true}), command === 'serve' && [ dynamicImport({ filter: allowJetBrainsIcons, }), commonjs({ filter: allowJetBrainsIcons, }), ], ], build: { target: browserslistToEsbuild(), lib: { formats: ['es'], entry: { index: 'src/index.ts', 'components/index': 'src/components/index.ts', 'plugin/index': 'src/plugin/index.tsx', 'plugin/registry': 'src/plugin/registry.ts', 'services/index': 'src/services/index.ts', 'statistics/index': 'src/statistics/index.ts', 'tab-plugin/index': 'src/tab-plugin/index.ts', 'utils/index': 'src/utils/index.ts', }, cssFileName: 'index', }, rollupOptions: { external: id => { const isInternal = id.startsWith('.') || id.startsWith('/') return !isInternal }, }, }, }))