44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
import { defineConfig, type Plugin } from "vite";
|
|
import react from "@vitejs/plugin-react";
|
|
|
|
const isolationHeaders = {
|
|
"Cross-Origin-Opener-Policy": "same-origin",
|
|
"Cross-Origin-Embedder-Policy": "require-corp",
|
|
"Cross-Origin-Resource-Policy": "same-origin",
|
|
};
|
|
|
|
function preserveIsolationHeaders(): Plugin {
|
|
const install = (server: { middlewares: { use: (handler: (request: unknown, response: { setHeader: (name: string, value: string) => void }, next: () => void) => void) => void } }) => {
|
|
server.middlewares.use((_request, response, next) => {
|
|
for (const [name, value] of Object.entries(isolationHeaders)) response.setHeader(name, value);
|
|
next();
|
|
});
|
|
};
|
|
return {
|
|
name: "preserve-isolation-headers",
|
|
configureServer: install,
|
|
configurePreviewServer: install,
|
|
};
|
|
}
|
|
|
|
export default defineConfig({
|
|
root: "app",
|
|
plugins: [preserveIsolationHeaders(), react()],
|
|
server: {
|
|
port: 5173,
|
|
strictPort: false,
|
|
headers: {
|
|
...isolationHeaders,
|
|
},
|
|
},
|
|
preview: {
|
|
headers: {
|
|
...isolationHeaders,
|
|
},
|
|
},
|
|
build: {
|
|
outDir: "../dist",
|
|
emptyOutDir: true,
|
|
},
|
|
});
|