Files
htwkalender/frontend/vite.config.ts
2024-09-07 10:09:30 +02:00

103 lines
2.7 KiB
TypeScript

//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 <https://www.gnu.org/licenses/>.
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 ViteSSGOptions from "vite-ssg";
import generateSitemap from "vite-ssg-sitemap";
import vueDevTools from "vite-plugin-vue-devtools";
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();
}
},
},
},
},
});