import { fileURLToPath, URL } from "node:url"; import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import vueDevTools from "vite-plugin-vue-devtools"; import Markdown from "unplugin-vue-markdown/vite"; import hljs from "highlight.js"; import { VitePWA } from "vite-plugin-pwa"; // https://vitejs.dev/config/ export default defineConfig({ plugins: [ vue({ include: [/\.vue$/, /\.md$/], }), vueDevTools(), Markdown({ // Optionen für Markdown-It (optional) markdownItOptions: { html: true, linkify: true, typographer: true, }, markdownItSetup(md) { // Syntax-Highlighting aktivieren md.set({ highlight: (str, lang) => { if (lang && hljs.getLanguage(lang)) { try { return `
${hljs.highlight(str, { language: lang }).value}
`; } catch (__) {} } return `
${md.utils.escapeHtml(str)}
`; }, }); }, }), VitePWA({ registerType: "autoUpdate", injectRegister: "auto", includeAssets: ["favicon.png", "favicon.ico"], manifest: { name: "__APPNAMEOVERWRITE__", short_name: "__APPNAMEOVERWRITE__", theme_color: "#990b00", icons: [ { src: "favicon.ico", sizes: "48x48", type: "image/png", }, { src: "favicon.png", sizes: "512x512", type: "image/png", }, ], }, }), ], resolve: { alias: { "@": fileURLToPath(new URL("./src", import.meta.url)), $: fileURLToPath(new URL("./docs", import.meta.url)), }, }, build: { rollupOptions: { output: { // Define the main output bundle (e.g., for your application) entryFileNames: "[name]-[hash].js", // Define the directory where the main bundle should be output dir: "dist", // Create a separate output bundle for your specific file manualChunks(id) { if (id.endsWith("src/config.ts")) { return "config"; // This will create a separate bundle for config-[hash].js } }, }, }, }, });