8 votes

Extraire le runtime d'Elm dans un morceau séparé

Lorsqu'un fichier Elm est compilé, le runtime Elm est extrait dans le même fichier. Appelons ce fichier app.js à partir de maintenant. Lorsqu'un seul octet est modifié dans app.js Dans ce cas, le hachage change, ce qui oblige le client à télécharger à nouveau le fichier, alors qu'un seul octet a changé. Existe-t-il un moyen d'extraire la durée d'exécution d'Elm dans un fichier séparé ? vendor (ou commons ) chunk ?

5voto

omouse Points 2840

Dans Elm 0.18 et les versions précédentes, le noyau d'Elm est inclus dans chaque paquet.

Cela peut s'avérer inefficace, par exemple si vous chargez différents composants Elm sur plusieurs pages. Chaque page aurait besoin de son propre bundle généré, mais le noyau Elm serait inclus dans chaque bundle.

Solution de contournement (non testée !)

  1. Compilez votre code Elm dans un paquet, output.js

  2. Ouvrir output.js et en commençant par le début du fichier jusqu'au dernier var qui ressemble à peu près à ceci :

    var _elm_lang$html$Html_Events$Options = F2(

    Sous la dernière déclaration de variable qui commence par _elm_lang vous devriez voir le code du module qui vous a écrit. C'est là que la séparation commence.

  3. Copiez et collez tout ce morceau dans un fichier séparé et nommez-le elm-core.js

  4. Tada ! Vous devriez maintenant pouvoir les charger comme ceci dans vos fichiers HTML :

     <html>
     <script src="elm-core.js"></script>
     <script src="output.js"></script>
     </html>

Attention ! L'ensemble du paquet de sortie est enveloppé dans une IIFE (expression de fonction immédiatement invoquée) ; vous devrez donc envelopper tous les morceaux dans cette expression pour vous assurer que cela fonctionne. Si vous ne le faites pas, vous obtiendrez des erreurs telles que "F2 n'est pas défini" et "A2 n'est pas défini".

Elm 0.19+

Dans les prochaines versions d'Elm, il devrait y avoir une solution plus agréable à ce problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X