✨ feat(ViteAssetExtension): Améliore la gestion des assets et ajoute le préchargement des modules.
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user