You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

85 lines
2.5 KiB

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"),
"@app": resolve(__dirname, "src/app"),
"@core": resolve(__dirname, "src/core"),
"@modules": resolve(__dirname, "src/modules"),
"@infrastructure": resolve(__dirname, "src/infrastructure"),
"@shared": resolve(__dirname, "src/shared"),
"@presentation": resolve(__dirname, "src/presentation"),
},
},
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/presentation/views",
dest: "views",
},
{
src: "src/infrastructure/database/migrations",
dest: "db",
},
{
src: "src/infrastructure/database/seeds",
dest: "db",
},
{
src: "entrypoint.sh",
dest: "",
},
{
src: "package.json",
dest: "",
},
{
src: "knexfile.mjs",
dest: "",
},
{
src: "bun.lockb",
dest: "",
},
],
}),
],
})