diff --git a/packages/package-bundler/package.json b/packages/package-bundler/package.json index 2205ba9f7f3..586a36e6c7d 100644 --- a/packages/package-bundler/package.json +++ b/packages/package-bundler/package.json @@ -31,7 +31,6 @@ "@rollup/plugin-typescript": "^12.1.2", "babel-plugin-pure-static-props": "^0.2.0", "concat-cli": "^4.0.0", - "lodash.merge": "^4.6.2", "rollup-plugin-ignore": "^1.0.10", "rollup-plugin-node-externals": "^7.1.3", "rollup-plugin-postcss": "^4.0.2", diff --git a/packages/package-bundler/src/rollup.ts b/packages/package-bundler/src/rollup.ts index c58a6ea2953..a2a6fb9b224 100644 --- a/packages/package-bundler/src/rollup.ts +++ b/packages/package-bundler/src/rollup.ts @@ -1,69 +1,79 @@ import fs from 'fs' import path from 'path' import typescript from '@rollup/plugin-typescript' -import merge from 'lodash.merge' import { type InputPluginOption, type RollupOptions } from 'rollup' import { pluginsDefault } from './presets/index.js' import { rollupTailwindConfig } from './presets/shared-ui/rollup-tailwind.js' +type Config = { + input?: RollupOptions['input'] + plugins?: InputPluginOption[] +} + export const rollupConfig = ( - userConfig: RollupOptions = { + config: Config = { input: { index: './src/index.ts' }, plugins: pluginsDefault as InputPluginOption[], }, ): RollupOptions[] => { + // Shared config + const userConfig = { + input: config.input, + plugins: config?.plugins ?? pluginsDefault, + } satisfies RollupOptions + // CommonJS - const cjsConfig: RollupOptions = merge( - { - plugins: [ - typescript({ - tsconfig: './tsconfig.dist.json', - compilerOptions: { - esModuleInterop: false, - allowSyntheticDefaultImports: true, - }, - }), - ], - output: { - dir: 'dist/cjs', - format: 'commonjs', - preserveModules: true, - entryFileNames: '[name].cjs', - interop: 'auto', - }, + const cjsConfig = { + ...userConfig, + treeshake: false, + plugins: [ + ...userConfig.plugins, + typescript({ + tsconfig: './tsconfig.dist.json', + compilerOptions: { + esModuleInterop: false, + allowSyntheticDefaultImports: true, + }, + }), + ], + output: { + dir: 'dist/cjs', + format: 'commonjs', + preserveModules: true, + entryFileNames: '[name].cjs', + interop: 'auto', }, - userConfig, - ) + } satisfies RollupOptions // ESModules - const esmConfig: RollupOptions = merge( - { - plugins: [ - typescript({ - tsconfig: './tsconfig.dist.json', - compilerOptions: { - declaration: true, - declarationDir: 'dist/esm/_tmp/types', - noEmit: false, - plugins: [ - { transform: 'typescript-transform-paths' }, - { - transform: 'typescript-transform-paths', - afterDeclarations: true, - }, - ], - }, - }), - ], - output: { - dir: 'dist/esm', - format: 'esm', - preserveModules: true, - entryFileNames: '[name].mjs', - }, + const esmConfig = { + ...userConfig, + treeshake: false, + plugins: [ + ...userConfig.plugins, + typescript({ + tsconfig: './tsconfig.dist.json', + compilerOptions: { + declaration: true, + declarationDir: 'dist/esm/_tmp/types', + noEmit: false, + plugins: [ + { transform: 'typescript-transform-paths' }, + { + transform: 'typescript-transform-paths', + afterDeclarations: true, + }, + ], + }, + }), + ], + output: { + dir: 'dist/esm', + format: 'esm', + preserveModules: true, + entryFileNames: '[name].mjs', }, - userConfig, - ) + } satisfies RollupOptions const hasTailwind = fs.existsSync(path.resolve(process.cwd(), './tailwind.config.js'))