mirror of
https://github.com/FoxxMD/multi-scrobbler.git
synced 2026-07-09 17:28:28 +00:00
71 lines
2.2 KiB
TypeScript
71 lines
2.2 KiB
TypeScript
import react from '@vitejs/plugin-react';
|
|
import normalizeUrl from "normalize-url";
|
|
import { defineConfig } from 'vite';
|
|
import tailwindcss from '@tailwindcss/vite'
|
|
import { dirname, resolve } from 'node:path'
|
|
|
|
const QUOTES_UNWRAP_REGEX: RegExp = new RegExp(/^"(.*)"$/);
|
|
export const generateBaseURL = (userUrl: string | undefined): URL => {
|
|
let cleanUserUrl = userUrl.trim();
|
|
if (QUOTES_UNWRAP_REGEX.test(cleanUserUrl)) {
|
|
const results = cleanUserUrl.match(QUOTES_UNWRAP_REGEX);
|
|
cleanUserUrl = results[1];
|
|
}
|
|
const base = normalizeUrl(cleanUserUrl, { removeSingleSlash: true });
|
|
const u = new URL(base);
|
|
if (u.port === '') {
|
|
if (u.protocol === 'https:') {
|
|
u.port = '443';
|
|
} else if (userUrl.includes(`${u.hostname}:80`)) {
|
|
u.port = '80';
|
|
}
|
|
}
|
|
return u;
|
|
}
|
|
|
|
export default defineConfig(() => {
|
|
let baseUrlStr = '/';
|
|
if (process.env.BASE_URL !== undefined && process.env.BASE_URL !== '') {
|
|
const baseUrl = generateBaseURL(process.env.BASE_URL);
|
|
if (baseUrl.pathname !== '/') {
|
|
baseUrlStr = baseUrl.toString();
|
|
}
|
|
}
|
|
console.debug(`[VITE] BASE_URL ENV: ${process.env.BASE_URL} | Base Url String: ${baseUrlStr}`);
|
|
return {
|
|
server: {
|
|
allowedHosts: (true as true),
|
|
watch: {
|
|
ignored: ['**/config/**']
|
|
}
|
|
},
|
|
esbuild: {
|
|
minifyIdentifiers: false
|
|
},
|
|
base: baseUrlStr,
|
|
plugins: [
|
|
react(),
|
|
tailwindcss(),
|
|
],
|
|
build: {
|
|
sourcemap: true,
|
|
cssCodeSplit: true,
|
|
rolldownOptions: {
|
|
input: {
|
|
main: resolve(import.meta.dirname, 'index.html'),
|
|
next: resolve(import.meta.dirname, 'next/index.html'),
|
|
},
|
|
},
|
|
},
|
|
define: {
|
|
"__USE_HASH_ROUTER__": JSON.stringify((process.env.USE_HASH_ROUTER ?? false))
|
|
},
|
|
css: {
|
|
preprocessorOptions: {
|
|
scss: {
|
|
api: 'modern-compiler' // or "modern"
|
|
}
|
|
}
|
|
}
|
|
};
|
|
});
|