resolvePath('/public/.vite/manifest.json');; #$manifestPath = dirname(__DIR__, 3) . '../public/.vite/manifest.json'; if (!is_file($manifestPath)) { throw new \RuntimeException("Vite manifest not found: $manifestPath"); } $json = file_get_contents($manifestPath); $this->manifest = json_decode($json, true) ?? []; } public function process(DomWrapper $dom, RenderContext $context): DomWrapper { // JS-Key, wie im Manifest unter "resources/js/main.js" $jsKey = 'resources/js/main.js'; // CSS-Key, wie im Manifest unter "resources/css/styles.css" $cssKey = 'resources/css/styles.css'; #$head = $dom->getElementsByTagName('head')->item(0); $head = $dom->document->head; $insertParent = $head ?: $dom->document->getElementsByTagName('body')->item(0) ?: $dom->document->documentElement; // --- CSS, wie von Vite empfohlen: Feld "css" beim js-Eintrag! --- if (!empty($this->manifest[$jsKey]['css']) && is_array($this->manifest[$jsKey]['css'])) { foreach ($this->manifest[$jsKey]['css'] as $cssFile) { $this->headService->addStylesheet($dom, '/' . ltrim($cssFile, '/')); /*$link = $dom->document->createElement('link'); $link->setAttribute('rel', 'stylesheet'); $link->setAttribute('href', '/' . ltrim($cssFile, '/')); $insertParent->appendChild($link);*/ } } // --- JS Main Script --- if (isset($this->manifest[$jsKey]['file']) && str_ends_with($this->manifest[$jsKey]['file'], '.js')) { $this->headService->addScript($dom, '/' . ltrim($this->manifest[$jsKey]['file'], '/')); /*$script = $dom->document->createElement('script'); $script->setAttribute('src', '/' . ltrim($this->manifest[$jsKey]['file'], '/')); $script->setAttribute('type', 'module'); $insertParent->appendChild($script);*/ } return $dom; } }