Bonjour,

Voila je rencontre un petit problème avec mon code. J'ai un gros projet qui compile du sass, JS (es6) via w"ebpack encore.
Il y a 177 fichiers en tout et ça prend trop de temps en mode production (5min à 7min).

Le petit truc c'est que j'ai 61 fichiers js différents en fonction des pages de mon projet.
Tous imporent d'autres fichiers, ...
Pour les fichiers scss je n'en ai que 3 et j'utilise UglifyJS pour la minification (qui prend beaucoup de temps à s'éxécuter, quasiement la moitié du temps).

j'ai créé un fichier via createSharedEntry qui comprend mes modules les plus utilisés de npm comme selct2, jquery, bootstrap.

Auriez-vous une solution qui permet d'optimiser grandement ces temps de compilation ?
faut-il uniquement faire une seule entrée js via webpack et y mettre tous mes fichiers js ?

Merci d'avance pour vos réponses :)

2 réponses


Digivia
Réponse acceptée

Salut,
Il est conseillé de générer les sources en mode dev, et en mode production d'utiliser les builds...
Par exemple, en dev, tu vas utiliser le serveur npm (npm run dev-server) et ensuite lorsque le résultat te satisfait, tu build (npm run build) et là, ça va te générer les js/css dans public/build (enfin le répertoire que tu as défini). Ensuite tu pousses ton build via git (ou autre).
Sinon, pour tes optims, il y a une alternative à createSharedEntry, qui est d'utiliser splitEntryChunks(). Cela va découpler les scripts communs à plusieurs entrypoints et éviter de recharger plusieurs fois les mêmes scripts (ex: jquery). Perso je trouve ça plus souple que le createSharedEntry.
En espérant t'avoir aidé...

Hello,

Je viens de test le splitEntryChunks qui a résolu mon pb en terme de poids de fichiers et vendor rappelés à quasiement chaque fichier :)