/** * Rolldown configuration for XAMXAM JS bundling. * * Entry points: * - admin.js → all JS needed on admin pages * - public.js → all JS needed on public-facing pages * - form.js → all JS needed on admin form pages (add/edit) * * Vendor scripts (htmx, FilePond plugins, OverType) are NOT bundled — * they're already minified and served from vendor/. * * Output: app/public/assets/dist/[name].min.js */ import { defineConfig } from "rolldown"; import { resolve, dirname } from "node:path"; import { fileURLToPath } from "node:url"; const __dirname = dirname(fileURLToPath(import.meta.url)); const root = __dirname; const jsDir = resolve(root, "app/public/assets/js/app"); const distDir = resolve(root, "app/public/assets/dist"); export default defineConfig({ input: { admin: resolve(jsDir, "admin-entry.js"), public: resolve(jsDir, "public-entry.js"), form: resolve(jsDir, "form-entry.js"), partage: resolve(jsDir, "partage-entry.js"), }, output: { dir: distDir, format: "esm", entryFileNames: "[name].min.js", // Disable code splitting — each entry gets its own self-contained bundle. codeSplitting: false, // rolldown built-in minification minify: true, }, resolve: { extensions: [".js"], }, });