feat(ViteAssetExtension): Améliore la gestion des assets et ajoute le préchargement des modules.

This commit is contained in:
Serreau Jovann
2025-11-21 21:45:55 +01:00
parent 3d2c4e71f4
commit aad89da47f

View File

@@ -87,24 +87,36 @@ 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 = <<<HTML
<script type="module" src="/build/{$file}" defer></script>
HTML;
$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;
}
foreach ($css as $cssFile) {
$html .= <<<HTML
<link rel="stylesheet" rel="preload" media="screen" href="/build/{$cssFile}"/>
HTML;
<link rel="stylesheet" media="screen" href="/build/{$cssFile}"/>
<link rel="preload" as="style" 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="/assets/{$import}"/>
HTML;
<link rel="modulepreload" href="/build/{$import}" crossorigin="anonymous"/>
HTML;
}
return $html;