create-prisma-php-app
Version:
Prisma-PHP: A Revolutionary Library Bridging PHP with Prisma ORM
62 lines (56 loc) • 1.65 kB
text/typescript
import { defineConfig, Plugin } from "vite";
import path from "path";
import fg from "fast-glob";
import { writeFileSync } from "fs";
import { generateGlobalTypes } from "./settings/vite-plugins/generate-global-types.js";
const entries = Object.fromEntries(
fg.sync("ts/**/*.ts", { ignore: ["**/*.test.ts"] }).map((f) => {
const rel = f.replace(/^ts\//, "").replace(/\.ts$/, "");
return [rel, path.resolve(__dirname, f)];
})
);
const VITE_WATCH_EXCLUDE = [
"public/js/**",
"node_modules/**",
"vendor/**",
".pp/**",
];
function browserSyncNotify(): Plugin {
const flagFile = path.resolve(__dirname, ".pp", ".vite-build-complete");
return {
name: "browsersync-notify",
writeBundle() {
writeFileSync(flagFile, Date.now().toString());
},
};
}
export default defineConfig(({ command, mode }) => ({
publicDir: false,
build: {
outDir: "public/js",
emptyOutDir: false,
minify: "esbuild",
sourcemap: false,
watch:
command === "build" && mode === "development"
? { exclude: VITE_WATCH_EXCLUDE }
: undefined,
rollupOptions: {
input: entries,
external: [/^\/js\/.*/],
output: {
entryFileNames: "[name].js",
chunkFileNames: "chunks/[name]-[hash].js",
assetFileNames: "assets/[name]-[hash][extname]",
},
},
},
plugins: [
generateGlobalTypes(),
...(command === "build" && mode === "development"
? [browserSyncNotify()]
: []),
],
esbuild: { legalComments: "none" },
define: { "process.env.NODE_ENV": '"production"' },
}));