Files
OpenList-Frontend/vite.config.ts
outlook84 ae445dad6b refactor!: improve CDN resource management (#144)
* Add `useCDN` hook for better management of CDN resources.

* Bundle CDN resources (Monaco Editor, KaTeX, Mermaid, Ruffle, etc.) using `vite-plugin-static-copy` into the dist, which can be beneficial for environments with network problems. 

* Add `VITE_LITE` environment for conditional lite version compilation, removing the need for a separate lite branch.

BREAKING CHANGE: The lite branch is no longer needed.
2025-08-06 17:01:54 +08:00

102 lines
3.0 KiB
TypeScript

import path from "path"
import { defineConfig } from "vite"
import solidPlugin from "vite-plugin-solid"
import legacy from "@vitejs/plugin-legacy"
import { dynamicBase } from "vite-plugin-dynamic-base"
import { viteStaticCopy } from "vite-plugin-static-copy"
export default defineConfig({
resolve: {
alias: {
"~": path.resolve(__dirname, "src"),
// "@solidjs/router": path.resolve(__dirname, "solid-router/src"),
"solid-icons": path.resolve(__dirname, "node_modules/solid-icons"),
},
},
plugins: [
solidPlugin(),
legacy({
targets: ["defaults"],
}),
dynamicBase({
// dynamic public path var string, default window.__dynamic_base__
publicPath: " window.__dynamic_base__",
// dynamic load resources on index.html, default false. maybe change default true
transformIndexHtml: true,
transformIndexHtmlConfig: {
insertBodyAfter: true,
},
}),
process.env.VITE_LITE !== "true"
? viteStaticCopy({
targets: [
{
src: "node_modules/monaco-editor/min/*",
dest: "static/monaco-editor",
},
{
src: "node_modules/katex/dist/katex.min.css",
dest: "static/katex",
},
{
src: "node_modules/katex/dist/fonts/*",
dest: "static/katex/fonts",
},
{
src: "node_modules/mermaid/dist/mermaid.min.js",
dest: "static/mermaid",
},
{
src: "node_modules/@ruffle-rs/ruffle/*.{js,wasm}",
dest: "static/ruffle",
},
{
src: "node_modules/libheif-js/libheif-wasm/libheif.{js,wasm}",
dest: "static/libheif",
},
{
src: "node_modules/libass-wasm/dist/js/subtitles-octopus-worker.{js,wasm}",
dest: "static/libass-wasm",
},
{
src: "src/components/artplayer-plugin-ass/fonts/*",
dest: "static/fonts",
},
],
})
: null,
],
base: process.env.NODE_ENV === "production" ? "/__dynamic_base__/" : "/",
// base: "/",
build: {
// target: "es2015", //next
// polyfillDynamicImport: false,
rollupOptions: {
output: {
assetFileNames: (assetInfo) =>
assetInfo.names?.some((name) => name.endsWith("pdf.worker.min.mjs"))
? "assets/[name]-[hash].js"
: "assets/[name]-[hash][extname]",
},
},
},
// experimental: {
// renderBuiltUrl: (filename, { type, hostId, hostType }) => {
// if (type === "asset") {
// return { runtime: `window.OPENLIST_CONFIG.cdn/${filename}` };
// }
// return { relative: true };
// },
// },
server: {
host: "0.0.0.0",
proxy: {
"/api": {
target: "http://localhost:5244",
changeOrigin: true,
// rewrite: (path) => path.replace(/^\/api/, ""),
},
},
},
})