issue-status
Version:
A flexible, modern and blazingly fast ☄️ status page
58 lines (52 loc) • 1.66 kB
text/typescript
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react-swc";
import tailwindcss from "@tailwindcss/vite";
import path from "path";
import fs from "fs";
import { tsImport } from "tsx/esm/api";
import type { IssueStatusConfig } from "./src/api/types";
export default defineConfig(async () => {
const packageRoot = import.meta.dirname;
const configPath = path.resolve(process.cwd(), "issue-status.config.ts");
const config = (await tsImport(configPath, import.meta.dirname))
.default as IssueStatusConfig;
if (!fs.existsSync(configPath)) {
throw new Error("issue-status.config.ts not found.");
}
return {
root: packageRoot,
base: "./",
publicDir: path.resolve(process.cwd(), "public"),
plugins: [
react(),
tailwindcss(),
{
name: "html-transform",
transformIndexHtml(html: string) {
return html
.replace(
/<title>Vite \+ React \+ TS<\/title>/,
`<title>${config.name}</title>`
)
.replace(
/<link rel="icon" href="\/vite.svg" \/>/,
`<link rel="icon" href="/vite.svg" />`
)
.replace(
/<meta name="description" content="My status page description" \/>/,
`<meta name="description" content="${config.description}" />`
);
},
},
],
define: {
__CONFIG_PATH__: JSON.stringify(configPath),
},
server: { fs: { allow: [packageRoot, process.cwd()] } },
build: {
outDir: path.resolve(process.cwd(), "dist"),
emptyOutDir: true,
target: "esnext",
},
};
});