mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender-pwa.git
synced 2025-07-16 01:28:50 +02:00
134 lines
3.6 KiB
TypeScript
134 lines
3.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 { VitePWA } from "vite-plugin-pwa";
|
|
import basicSsl from "@vitejs/plugin-basic-ssl";
|
|
|
|
export default defineConfig({
|
|
plugins: [
|
|
vue(),
|
|
basicSsl(),
|
|
VitePWA({
|
|
mode: "development",
|
|
base: "/",
|
|
injectRegister: "auto",
|
|
includeAssets: [
|
|
"favicon.ico",
|
|
"apple-touch-icon.png",
|
|
"mask-icon.svg",
|
|
"robots.txt",
|
|
"sitemap.xml",
|
|
],
|
|
manifest: {
|
|
name: "HTWKalender",
|
|
short_name: "HTWKalender",
|
|
description:
|
|
"Calendar implementation for the HTWK Leipzig timetable. Evaluation and display of the individual dates in iCal format.",
|
|
theme_color: "#FFFFFF",
|
|
background_color: "#FFFFFF",
|
|
display: "standalone",
|
|
start_url: "/",
|
|
id: "de.htwk-leipzig.htwkalender",
|
|
screenshots: [
|
|
{
|
|
src: "/1280x720.png",
|
|
sizes: "1280x720",
|
|
form_factor: "wide",
|
|
type: "image/png",
|
|
},
|
|
{
|
|
src: "/390x844.png",
|
|
sizes: "1170x2532",
|
|
form_factor: "narrow",
|
|
type: "image/png",
|
|
},
|
|
],
|
|
icons: [
|
|
{
|
|
src: "/pwa-192x192.png",
|
|
sizes: "192x192",
|
|
type: "image/png",
|
|
purpose: "any",
|
|
},
|
|
{
|
|
src: "/pwa-512x512.png",
|
|
sizes: "512x512",
|
|
type: "image/png",
|
|
purpose: "any",
|
|
},
|
|
{
|
|
src: "/pwa-maskable-192x192.png",
|
|
sizes: "192x192",
|
|
type: "image/png",
|
|
purpose: "maskable",
|
|
},
|
|
{
|
|
src: "/pwa-maskable-512x512.png",
|
|
sizes: "512x512",
|
|
type: "image/png",
|
|
purpose: "maskable",
|
|
},
|
|
],
|
|
},
|
|
registerType: "autoUpdate",
|
|
strategies: "injectManifest",
|
|
injectManifest: {
|
|
globPatterns: ["**/*.{js,css,html,ico,png,svg,json,vue,txt,woff2}", "/api/schedule/rooms"],
|
|
},
|
|
}),
|
|
],
|
|
define: {
|
|
__APP_VERSION__: JSON.stringify(process.env.npm_package_version),
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
"@": fileURLToPath(new URL("./src", import.meta.url)),
|
|
},
|
|
},
|
|
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,
|
|
},
|
|
esbuild: {
|
|
supported: {
|
|
"top-level-await": true,
|
|
},
|
|
},
|
|
optimizeDeps: {
|
|
esbuildOptions: {
|
|
supported: {
|
|
"top-level-await": true,
|
|
},
|
|
},
|
|
},
|
|
});
|