feat(ViteAssetExtension): Améliore la génération de balises HTML pour les assets Vite.

This commit is contained in:
Serreau Jovann
2025-11-21 21:46:34 +01:00
parent aad89da47f
commit 373a53f604

View File

@@ -87,36 +87,24 @@ class ViteAssetExtension extends AbstractExtension
{
$this->loadManifest();
// Assurez-vous que l'initialisation de ces variables est faite correctement
$file = $this->manifestData[$entry]['file'] ?? '';
$css = $this->manifestData[$entry]['css'] ?? [];
$imports = $this->manifestData[$entry]['imports'] ?? [];
$html = '';
// 1. Script principal
// Ajout de crossorigin="anonymous" au <script> n'est pas nécessaire car il est type="module",
// mais il est préférable d'utiliser le modulepreload pour les dépendances.
if (!empty($file)) {
$html .= <<<HTML
<script type="module" src="/build/{$file}" defer></script>
HTML;
}
$html = <<<HTML
<script type="module" src="/build/{$file}" defer></script>
HTML;
foreach ($css as $cssFile) {
$html .= <<<HTML
<link rel="stylesheet" media="screen" href="/build/{$cssFile}"/>
<link rel="preload" as="style" href="/build/{$cssFile}" crossorigin="anonymous"/>
HTML;
<link rel="stylesheet" rel="preload" media="screen" href="/build/{$cssFile}" crossorigin="anonymous"/>
HTML;
}
// 3. Préchargement des modules (ESM)
// L'attribut crossorigin="anonymous" est généralement requis pour les modulepreload
// si l'application est déployée sur un CDN ou a des politiques CORS spécifiques.
foreach ($imports as $import) {
$html .= <<<HTML
<link rel="modulepreload" href="/build/{$import}" crossorigin="anonymous"/>
HTML;
<link rel="modulepreload" href="/assets/{$import}"/>
HTML;
}
return $html;