//Calendar implementation for the HTWK Leipzig timetable. Evaluation and display of the individual dates in iCal format. //Copyright (C) 2024 HTWKalender support@htwkalender.de //This program is free software: you can redistribute it and/or modify //it under the terms of the GNU Affero General Public License as published by //the Free Software Foundation, either version 3 of the License, or //(at your option) any later version. //This program is distributed in the hope that it will be useful, //but WITHOUT ANY WARRANTY; without even the implied warranty of //MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //GNU Affero General Public License for more details. //You should have received a copy of the GNU Affero General Public License //along with this program. If not, see . import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import { fileURLToPath } from "node:url"; import resolve from "@rollup/plugin-node-resolve"; import { resolve as pathResolver } from "path"; import terser from "@rollup/plugin-terser"; import generateSitemap from "vite-ssg-sitemap"; import vueDevTools from "vite-plugin-vue-devtools"; import { ViteSSGOptions } from "vite-ssg"; const hostname = "https://cal.htwk-leipzig.de"; // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue(), resolve(), terser(), vueDevTools()], resolve: { alias: { "@": fileURLToPath(new URL("./src", import.meta.url)), primevue: pathResolver(__dirname, "node_modules/primevue"), }, extensions: [ ".mjs", ".js", ".ts", ".jsx", ".tsx", ".json", ".css", ".scss", ], }, ssgOptions: { script: "async", formatting: "minify", format: "esm", onFinished: () => { generateSitemap({ hostname: hostname, exclude: [ "/additional-modules", "/edit-additional-modules", "/edit-calendar", "/rename-modules", ], }); }, }, server: { host: true, port: 8000, watch: { usePolling: true, }, proxy: { "/api": { target: "http://localhost:8090/api", changeOrigin: true, rewrite: (path) => path.replace(/^\/api/, ""), }, }, }, build: { sourcemap: true, minify: "terser", terserOptions: { compress: { drop_console: true, }, }, cssMinify: "esbuild", cssCodeSplit: true, rollupOptions: { output: { manualChunks(id) { if (id.includes("node_modules")) { return id .toString() .split("node_modules/")[1] .split("/")[0] .toString(); } }, }, }, }, });