import { defineConfig } from 'vite'; import packageJson from './package.json'; import type { PackageJson } from 'type-fest'; const entryFileNames = (chunk: any, extension: 'cjs') => { if (!chunk.isEntry) { throw new Error( `Should never occurs, encountered a non entry chunk ${chunk.facadeModuleId}`, ); } const splitFaceModuleId = chunk.facadeModuleId?.split('/'); if (splitFaceModuleId === undefined) { throw new Error( `Should never occurs splitFaceModuleId is undefined ${chunk.facadeModuleId}`, ); } const moduleDirectory = splitFaceModuleId[splitFaceModuleId?.length - 2]; if (moduleDirectory === 'src') { return `${chunk.name}.${extension}`; } return `${moduleDirectory}.${extension}`; }; export default defineConfig(() => { return { root: __dirname, cacheDir: '../../node_modules/.vite/packages/twenty-zapier', resolve: { tsconfigPaths: true, }, build: { emptyOutDir: false, outDir: 'lib', lib: { entry: 'src/index.ts', name: 'twenty-zapier' }, rollupOptions: { external: (id: string) => { if (/^node:/.test(id)) { return true; } const builtins = ['path', 'fs', 'child_process', 'util']; if (builtins.includes(id)) { return true; } const deps = Object.keys( (packageJson as PackageJson).dependencies || {}, ); return deps.some((dep) => id === dep || id.startsWith(dep + '/')); }, output: [ { format: 'cjs', esModule: true, exports: 'named', entryFileNames: (chunk) => entryFileNames(chunk, 'cjs'), }, ], }, }, logLevel: 'warn', }; });