import react from '@vitejs/plugin-react-swc'; import { defineConfig, loadEnv } from 'vite'; import checker from 'vite-plugin-checker'; import svgr from 'vite-plugin-svgr'; import tsconfigPaths from 'vite-tsconfig-paths'; type Checkers = Parameters[0]; // https://vitejs.dev/config/ export default defineConfig(({ command, mode }) => { const env = loadEnv(mode, process.cwd(), ''); /* Using explicit env variables, there is no need to expose all of them (security). */ const { REACT_APP_SERVER_BASE_URL, VITE_BUILD_SOURCEMAP } = env; const isBuildCommand = command === 'build'; const checkers: Checkers = { typescript: { tsconfigPath: 'tsconfig.app.json', }, overlay: false, }; if (!isBuildCommand) { checkers['eslint'] = { lintCommand: 'eslint . --report-unused-disable-directives --max-warnings 0 --config .eslintrc.cjs', }; } return { root: __dirname, cacheDir: '../../node_modules/.vite/packages/twenty-front', server: { port: 3001, host: 'localhost', }, plugins: [ react({ jsxImportSource: '@emotion/react' }), tsconfigPaths({ projects: ['tsconfig.json', '../twenty-ui/tsconfig.json'], }), svgr(), checker(checkers), ], build: { outDir: 'build', sourcemap: VITE_BUILD_SOURCEMAP === 'true', }, envPrefix: 'REACT_APP_', define: { 'process.env': { REACT_APP_SERVER_BASE_URL, }, }, }; });