import { dirname, resolve } from "node:path" import { fileURLToPath } from "node:url" import module from "node:module" import { defineConfig } from "vite" import pkg from "./package.json" import { viteStaticCopy } from "vite-plugin-static-copy" const __dirname = dirname(fileURLToPath(import.meta.url)) function getExternal(): string[] { return [...Object.keys(pkg.dependencies || {}), ...module.builtinModules] } export default defineConfig({ publicDir: false, resolve: { alias: { "@": resolve(__dirname, "src"), db: resolve(__dirname, "src/db"), config: resolve(__dirname, "src/config"), utils: resolve(__dirname, "src/utils"), services: resolve(__dirname, "src/services"), }, }, build: { lib: { entry: resolve(__dirname, "src/main.js"), formats: ["es"], fileName: () => `[name].js`, }, outDir: resolve(__dirname, "dist"), rollupOptions: { external: getExternal(), // watch: { // include: "src/**", // exclude: "node_modules/**", // }, output: { preserveModules: true, preserveModulesRoot: "src", inlineDynamicImports: false, }, }, }, plugins: [ viteStaticCopy({ targets: [ { src: "public", dest: "", }, { src: "src/views", dest: "", }, { src: "src/db/migrations", dest: "db", }, { src: "src/db/seeds", dest: "db", }, { src: "entrypoint.sh", dest: "", }, { src: "package.json", dest: "", }, { src: "knexfile.mjs", dest: "", }, { src: "bun.lockb", dest: "", }, ], }), ], })