Modules ES6 et extension de fichier
Il n'est pas obligatoire de déclarer l'extension de fichier quand on importe un module ES6. Ne pas le faire peut cependant poser soucis si un dossier du même nom que le fichier importé existe...
Le problème est apparu avec les modules concaténés que j'ai utilisé jusqu'ici afin de réduire le nombre de requêtes serveur. Les fichiers concaténés contenaient l'ensemble des modules d'un dossier et le dit dossier n'était pas forcément supprimé car les appels de modules en interne pointaient toujours vers les fichiers indépendants, les fichiers concaténés n'étant utilisé que depuis l'extérieur de la librairie rnb-js
et dans son fichier d'initialisation. Comme expliqué à l'époque : bancal comme solution mais ça tenait la route et ça réduisait tout de même le nombre de requêtes serveurs.
Sauf que j'ai voulu nettoyer les imports en supprimant l'extension du nom des fichiers. Et là, ce fût le drame !
js/
core/
dates.js
dom.js
strings.js
core.js
index.html
core
dans un fichier core.js
import {dom} from './js/core.js'; // => OK
import {dom} from './js/core'; // => KO
Les solutions possibles étaient (1) de ne pas supprimer l'extension de fichier ou (2) de supprimer le dossier des modules concaténés. Je n'avais pas envie d'appliquer la première et la seconde était inenvisageable sans rendre les imports internes de la librairie totalement merdiques.
Conclusion : j'ai abandonné l'idée de la concaténation. Ça n'est clairement pas optimal et je finirais sans doute par intégrer une étape de concaténation/bundle dans le build de la librairie et du site, sans doute à base de webpack.