Spaces:
Running
Running
| import type { ServerResponse } from "node:http"; | |
| import { defineConfig, type Plugin } from "vite"; | |
| const ISOLATION_HEADERS = { | |
| "Cross-Origin-Opener-Policy": "same-origin", | |
| "Cross-Origin-Embedder-Policy": "require-corp", | |
| "Cross-Origin-Resource-Policy": "cross-origin", | |
| }; | |
| const applyHeaders = (response: ServerResponse) => { | |
| for (const [key, value] of Object.entries(ISOLATION_HEADERS)) { | |
| response.setHeader(key, value); | |
| } | |
| }; | |
| const healthcheckPlugin = (): Plugin => ({ | |
| name: "healthcheck", | |
| configureServer(server) { | |
| server.middlewares.use("/health", (_request, response) => { | |
| applyHeaders(response); | |
| response.statusCode = 200; | |
| response.setHeader("Content-Type", "text/plain; charset=utf-8"); | |
| response.end("ok"); | |
| }); | |
| }, | |
| configurePreviewServer(server) { | |
| server.middlewares.use("/health", (_request, response) => { | |
| applyHeaders(response); | |
| response.statusCode = 200; | |
| response.setHeader("Content-Type", "text/plain; charset=utf-8"); | |
| response.end("ok"); | |
| }); | |
| }, | |
| }); | |
| export default defineConfig({ | |
| publicDir: "src/vendor", | |
| plugins: [healthcheckPlugin()], | |
| server: { | |
| headers: ISOLATION_HEADERS, | |
| host: "0.0.0.0", | |
| port: 3000, | |
| strictPort: true, | |
| }, | |
| preview: { | |
| headers: ISOLATION_HEADERS, | |
| host: "0.0.0.0", | |
| port: 3000, | |
| strictPort: true, | |
| }, | |
| build: { | |
| outDir: "dist", | |
| }, | |
| optimizeDeps: { | |
| exclude: ["@mlc-ai/web-llm"], | |
| }, | |
| }); | |