Files

67 lines
1.8 KiB
JavaScript

import path from "node:path";
import { fileURLToPath } from "node:url";
import tailwindcss from "@tailwindcss/vite";
import { svelte } from "@sveltejs/vite-plugin-svelte";
import { defineConfig } from "vite";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const templateDir = path.resolve(__dirname, "../backend/bot/app/web/templates");
export default defineConfig(({ mode }) => {
const isAdminBuild = mode === "admin";
const isDocsDemoBuild = mode === "docs-demo";
const outputBase = isAdminBuild
? "subscription_webapp_admin"
: isDocsDemoBuild
? "subscription_webapp_docs_demo"
: "subscription_webapp";
const entry = isAdminBuild
? "src/adminEntry.js"
: isDocsDemoBuild
? "src/docsDemoEntry.js"
: "src/main.js";
return {
resolve: {
alias: {
$lib: path.resolve(__dirname, "src/lib"),
$components: path.resolve(__dirname, "src/lib/components"),
},
},
plugins: [
tailwindcss(),
svelte({
compilerOptions: isAdminBuild ? { compatibility: { componentApi: 4 } } : {},
}),
],
build: {
outDir: templateDir,
emptyOutDir: false,
minify: false,
sourcemap: false,
cssCodeSplit: false,
lib: {
entry: path.resolve(__dirname, entry),
name: isAdminBuild ? "SubscriptionWebAppAdmin" : "SubscriptionWebApp",
formats: ["iife"],
fileName: () => `${outputBase}.js`,
cssFileName: outputBase,
},
rolldownOptions: {
checks: {
pluginTimings: false,
},
output: {
assetFileNames: (assetInfo) => {
if (assetInfo.name && assetInfo.name.endsWith(".css")) {
return `${outputBase}.css`;
}
return `${outputBase}.[name][extname]`;
},
},
},
},
};
});