Files
FreeCADWasmDev/web/vite.config.ts
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

109 lines
4.2 KiB
TypeScript

import { defineConfig } from "vite";
import { fastPublicAssets } from "./tools/fast-public-assets.ts";
const isolationHeaders = {
"Cross-Origin-Opener-Policy": "same-origin",
"Cross-Origin-Embedder-Policy": "require-corp",
};
export default defineConfig({
server: { headers: isolationHeaders },
preview: { headers: isolationHeaders },
plugins: [...(process.env.FREECAD_WEB_FAST_LINK === "ON" ? [fastPublicAssets()] : []), {
name: "freecad-web-csp",
transformIndexHtml(html) {
const policy = "default-src 'self'; script-src 'self' 'unsafe-inline' 'wasm-unsafe-eval' blob:; worker-src 'self' blob:; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob:; connect-src 'self'; object-src 'none'; base-uri 'self'";
return {
html,
tags: [
{ tag: "meta", attrs: { "http-equiv": "Content-Security-Policy", content: policy }, injectTo: "head" },
{ tag: "script", attrs: { type: "module", src: "/module-preload.js" }, injectTo: "head-prepend" },
],
};
},
}],
build: {
rollupOptions: {
input: {
main: "index.html",
core: "core.html",
document: "document.html",
"main-chain": "main-chain.html",
project: "project.html",
full: "full.html",
workbench: "workbench.html",
python: "python.html",
assembly: "assembly.html",
bim: "bim.html",
cam: "cam.html",
cloud: "cloud.html",
draft: "draft.html",
fem: "fem.html",
help: "help.html",
import: "import.html",
inspection: "inspection.html",
jtreader: "jtreader.html",
material: "material.html",
measure: "measure.html",
mesh: "mesh.html",
meshpart: "meshpart.html",
openscad: "openscad.html",
part: "part.html",
"part-io": "part-io.html",
"part-inspect": "part-inspect.html",
"part-python": "part-python.html",
"part-save": "part-save.html",
"partdesign-save": "partdesign-save.html",
partdesign: "partdesign.html",
"partdesign-inspect": "partdesign-inspect.html",
"partdesign-python": "partdesign-python.html",
"points-save": "points-save.html",
points: "points.html",
sandbox: "sandbox.html",
"sandbox-inspect": "sandbox-inspect.html",
"sandbox-python": "sandbox-python.html",
"sandbox-save": "sandbox-save.html",
sketcher: "sketcher.html",
"sketcher-persistence": "sketcher-persistence.html",
"plot-python": "plot-python.html",
"reverseengineering-inspect": "reverseengineering-inspect.html",
"reverseengineering-python": "reverseengineering-python.html",
"reverseengineering-save": "reverseengineering-save.html",
"reverseengineering-create": "reverseengineering-create.html",
"robot-create": "robot-create.html",
"robot-save": "robot-save.html",
"robot-inspect": "robot-inspect.html",
"robot-python": "robot-python.html",
spreadsheet: "spreadsheet.html",
"spreadsheet-inspect": "spreadsheet-inspect.html",
"spreadsheet-python": "spreadsheet-python.html",
"spreadsheet-save": "spreadsheet-save.html",
"surface-save": "surface-save.html",
start: "start.html",
"start-inspect": "start-inspect.html",
"start-python": "start-python.html",
templatepymod: "templatepymod.html",
"templatepymod-python": "templatepymod-python.html",
web: "web.html",
test: "test.html",
"web-action-03": "web-persistence.html",
tux: "tux.html",
techdraw: "techdraw.html",
"techdraw-native": "techdraw-native.html",
"techdraw-inspect": "techdraw-inspect.html",
"techdraw-python": "techdraw-python.html",
"techdraw-save": "techdraw-save.html",
surface: "surface.html",
"surface-inspect": "surface-inspect.html",
"surface-python": "surface-python.html",
"show-inspect": "show-inspect.html",
"show-python": "show-python.html",
"sketcher-inspect": "sketcher-inspect.html",
"sketcher-python": "sketcher-python.html",
"points-inspect": "points-inspect.html",
"points-python": "points-python.html",
},
},
},
});