Importmap - fichier distant non standard
Si on veut récupérer le js esm avec ce type d'url : https://cdn.jsdelivr.net/npm/lodash@4.17.21/+esm cela ne fonctionne pas. Il y a un double point de blocage :
-
https://git.spip.net/spip/ecrire/-/blob/importmap_fichier_distant/inc/importmap.php?ref_type=heads#L29 on test si l'url termine par
.jsou.js.htmlEn changeant la regex par([.]js(\.html)?)?(esm)?$on test que le fichier finisse par.jsou.js.htmlouesmcela fonctionne -
https://git.spip.net/spip/ecrire/-/blob/importmap_fichier_distant/inc/importmap.php?ref_type=heads#L35
basename(https://cdn.jsdelivr.net/npm/lodash@4.17.21/+esmdonne+esmpas top pour un nom de fichier
Solution :
-
ajouter un deuxieme argument à la fonction
chemin_import_js($fichier)=>function chemin_import_js($fichier, $nom_fichier = null) -
et utiliser cet argument :
if (!$nom_fichier) { $nom_fichier = basename($fichier); } $chemin = copie_locale($fichier, 'auto', sous_repertoire(_DIR_VAR . 'node_modules') . basename($nom_fichier));
et on modifie son appel : https://git.spip.net/spip/ecrire/-/blob/importmap_fichier_distant/inc/importmap.php?ref_type=heads#L136 par :
$tab_importmap['imports'][$cle] = chemin_import_js($f, $cle);
cela fonctionne, avec l'appel du pipeline importmap :
$flux['data']['lodash.js'] = 'https://cdn.jsdelivr.net/npm/lodash@4.17.21/+esm';
Modification effectuée par tofulm