Webpack Encore🔗
Installation🔗
Références: https://symfony.com/doc/current/frontend/encore/installation.html
1 2 |
|
Optimisation des sourcemaps🔗
Par défaut webpack utilise le format inline-source-map
qui est exhaustif au niveau du sourcemap généré (le lien est fait exactement avec le code source) mais est lent que ce soit au build ou au rebuild (watch).
Le eval-cheap-module-source-map
est relativement lent au build, mais très efficace au rebuild, donc parfait pour du dev en terme de temps. En terme de sourcemaps, c'est un bon compromis aussi, car s'il n'a pas les source "exactes", il utilise tout de même les sources non transformées et est capable de faire le lien avec le numéro de ligne, ce qui est plus que suffisant pour debug.
On peut trouver une liste des différents format possible sur la documentation de webpack
1 2 3 4 |
|
Build CSS dédié🔗
Pour séparer le build CSS d'un (ou plusieurs) build JS et éviter d'avoir à "inclure" du CSS dans un fichier JS, rajouter l'entrée suivante :
1 |
|
Puis intégrer dans les templates twig comme habituellement :
1 2 3 |
|
Tags style & script personalisés (javascript non bloquant avec async)🔗
La configuration par défaut du Webpack Encore bundle propose d'ores-et-déjà de charger les scripts à la fin de la balise head
avec un attribut defer
.
Si cela ne vous convient pas, ou que vous avec d'autres attributs à configurer, il existe plusieurs méthodes pour les renseigner.
Il est notamment possible de spécifier directement dans Twig la liste des attributs:
1 2 3 4 5 |
|
ou encore globalement dans la config du bundle:
1 2 3 4 5 |
|
Dans cet exemple, on permet de charger le javascript de manière non-bloquante en l'incluant dans la balise head
et en spécifiant l'attribut HTML5 async
.
Alias (a.k.a. le "namespace" du module)🔗
Pour avoir des chemins absolus plûtot que relatifs dans les imports ES6, déclarer des alias comme ceci dans votre configuration Webpack Encore:
Appelez la méthode suivante :
1 2 3 4 |
|
Vous pouvez maintenant dans assets/js/module/user/User.js
utiliser des chemins absolus via l'alias:
1 2 |
|
Résoudre les alias avec PhpStorm🔗
PhpStorm supporte nativement la résolution des alias déclarés via la configuration Webpack, permettant l'autocomplétion et d'importer automatiquement un élément de code JS lors de son utilisation, via l'alias en lieu et place du chemin relatif.
Cependant, étant donné que nous utilisons Webpack Encore qui est une surcouche avec sa propre syntaxe, le fichier webpack.config.js
n'est pas toujours correctement interprété.
Une solution de contournement est d'alors redéclarer les alias dans un fichier dédié:
1 2 3 4 5 6 7 8 |
|
et d'indiquer ce fichier à PhpStorm via la configuration Preferences | Languages & Frameworks | JavaScript | Webpack | Manually | Configuration file
.
Note
Vous pouvez choisir d'ignorer ce fichier (via votre fichier .gitinore
global par convention, ou via le fichier /path-to-your-project/.git/info/exclude
) ou bien l'intégrer pleinement à votre projet en le réutilisant dans le fichier webpack.config.js
pour toute configuration spécifique, hors Webpack Encore.