Das ist in Vite extrem einfach umzusetzen. Du wirfst die Imports oben in deiner App.jsx raus und lädst sie erst dynamisch im if-Block:
// 1. Diese beiden Zeilen OBEN in der App.jsx LÖSCHEN!
// import { renderMermaid } from './engines/mermaid';
// import { renderVega } from './engines/vega';
// ...
// 2. Unten im try/catch Block dynamisch importieren (mit 'await import'):
try {
const decodedCode = decodePayload(payload);
setDiagramSource(decodedCode);
if (engine === 'mermaid') {
// Läd die 1 MB Mermaid-Bibliothek erst JETZT aus dem Netzwerk
const { renderMermaid } = await import('./engines/mermaid.js');
await renderMermaid(decodedCode, containerRef);
} else if (engine === 'vegalite' || engine === 'vega') {
// Läd Vega erst JETZT
const { renderVega } = await import('./engines/vega.js');
await renderVega(decodedCode, containerRef);
} else {
setError(`Engine '${engine}' ist noch nicht implementiert.`);
}
} catch (err) {
// ...
Wenn du danach npm run build ausführst, wirst du sehen, dass Vite die große index.js in mehrere kleine Dateien zerschneidet und die Warnung von selbst verschwindet. Die Startzeit des Tools wird dadurch auf einen Bruchteil einer Sekunde sinken.
Noch offen:
- Werden './engines/vega.js' und './engines/mermaid.js' bei einer Hash-Änderung jedes mal neu geladen,
- und ist das ggf. so gewollt?
Das ist in Vite extrem einfach umzusetzen. Du wirfst die Imports oben in deiner
App.jsxraus und lädst sie erst dynamisch imif-Block:Wenn du danach
npm run buildausführst, wirst du sehen, dass Vite die großeindex.jsin mehrere kleine Dateien zerschneidet und die Warnung von selbst verschwindet. Die Startzeit des Tools wird dadurch auf einen Bruchteil einer Sekunde sinken.Noch offen: