import { defineConfig } from "tsup"; export default defineConfig([ { format: ["cjs", "esm"], entry: ["./src/sdk/index.ts"], skipNodeModulesBundle: true, // dts: true, shims: true, clean: false, outDir: "./dist/sdk", treeshake: true, target: "es2020", dts: { entry: { general: "src/sdk/general/genTypes.ts", customers: "src/sdk/customers/cusTypes.ts", products: "src/sdk/products/prodTypes.ts", index: "src/sdk/index.ts", // Main types will go to index.d.ts }, // This ensures .d.ts files are generated separately resolve: true, }, }, { entry: ["src/react/index.ts"], format: ["cjs", "esm"], dts: { entry: "src/react/index.ts", }, clean: false, // Don't clean on subsequent builds outDir: "./dist/react", external: ["react", "react/jsx-runtime", "react-dom"], bundle: false, }, // React client components { entry: ["src/react/client/**/*.ts", "src/react/client/**/*.tsx"], format: ["cjs", "esm"], dts: true, clean: true, outDir: "./dist/react/client", external: ["react", "react/jsx-runtime", "react-dom"], bundle: false, esbuildOptions(options) { options.banner = { js: '"use client";', }; options.platform = "neutral"; options.format = "esm"; }, }, // React server components { entry: ["src/react/server/*.ts"], format: ["cjs", "esm"], dts: true, clean: true, outDir: "./dist/react/server", external: ["react", "react/jsx-runtime", "react-dom"], bundle: false, banner: { js: '"use server";', }, esbuildOptions(options) { options.banner = { js: '"use server";', }; options.platform = "node"; options.format = "esm"; }, }, ]);