Files
htwkalender/frontend/vite.config.ts

94 lines
2.6 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'
const hostname = "https://cal.htwk-leipzig.de";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
vue(),
resolve(),
terser(),
],
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()
}
},
},
}
},
});