import { resolve } from "node:path"; import { fileURLToPath } from "node:url"; import { defineConfig } from "vite"; import dts from "vite-plugin-dts"; const __dirname = fileURLToPath(new URL(".", import.meta.url)); const sharedOutput = { preserveModules: true, preserveModulesRoot: resolve(__dirname, "src"), assetFileNames: "assets/[name]-[hash][extname]", exports: "named", } as const; export default defineConfig({ build: { lib: { entry: { index: resolve(__dirname, "src/index.ts"), "input-rule/index": resolve(__dirname, "src/input-rule/index.ts"), "knock-test/index": resolve(__dirname, "src/knock-test/index.ts"), "permission/index": resolve(__dirname, "src/permission/index.ts"), "printer/index": resolve(__dirname, "src/printer/index.ts"), "time/index": resolve(__dirname, "src/time/index.ts"), "timer/index": resolve(__dirname, "src/timer/index.ts"), "ui/index": resolve(__dirname, "src/ui/index.ts"), }, }, rolldownOptions: { external: ["dayjs", "lodash-es", "text-encoding", "tslib"], output: [ { ...sharedOutput, format: "es", entryFileNames: "[name].mjs", chunkFileNames: "chunks/[name]-[hash].mjs", }, { ...sharedOutput, format: "cjs", entryFileNames: "[name].cjs", chunkFileNames: "chunks/[name]-[hash].cjs", }, ], }, sourcemap: true, }, resolve: { alias: { "@": resolve(__dirname, "src"), }, }, plugins: [ dts({ include: ["src", "types"], outDir: "dist", }), ], });