Pendant la phase de développement d'un projet, il est parfois nécessaire d'utiliser des petites librairies d' outils qui permettent d'optimiser / alléger / accélérer sa réalisation. Ce sont des petites tâches qu'on exécute de temps en temps ou plusieurs fois durant cette phase, et à la longue, cela devient de plus en plus lassant.
Je vais vous présenter dans cet article Gulp , qui est un outil développé à partir de la plateforme Node JS. Le principe est de regrouper ces petites tâches afin de les automatiser. Un autre outil fonctionnant de la même manière est Grunt. Pour voir les différences, merci de lire l'article "Gulp remplacera-t-il Grunt ?" de Nicolas Froidure.
Installation
Il existe 2 types d'installation :
1 - Installation globale, c'est à dire une bonne fois pour toute sur une machine hôte :
2 - Installation pour un projet spécifique :
Principe de fonctionnement
Comme nous l'avons indiqué au début, le but est de regrouper les tâches à effectuer. Pour cela, il faut d'abord créer un fichier nommé gulpfile.js à la racine du projet, dont le contenu doit ressembler à ceci :
En gros, il faut déclarer au début du fichier les packages ( modules ou plugins ) Gulp qui sont nécessaires pour les différentes tâches à exécuter. Ensuite, on utilise la méthode "task" pour les enregistrer. Dans notre exemple, le nom de la tâche est "default" et tout ce qui est dans function () sont les commandes à exécuter pour cette tâche.
Enfin, pour exécuter une tâche, il suffit de faire la commande suivante dans la console :
Il faut aussi noter que si l'argument "nom_de_la_tache" est omis, c 'est la tâche nommée "default" qui sera exécutée.
Cas pratique
Mais alors dans quels cas faut il l'utiliser ?
Durant la phase de développement, les développeurs front-end utilisent par exemple la librairie SASS ou LESS pour "développer" leurs feuilles de styles. Il est parfois nécessaire de les minifier quand on passe en production, mais nous savons tous que débugger un fichier minifié n'est pas une mince affaire, alors il est nécessaire de posséder les 2 fichiers non-minifiés et minifiés. Pour cela, on doit créer une copie du fichier non-minifé, le minifier, le placer ailleurs ou le renommer. Si le site utilise beaucoup de fichiers javascript ( une dizaine par exemple ), en production, il est parfois recommandé de les combiner dans un seul fichier pour minimiser les requêtes sur le serveur, puis les minifier aussi si possible. Et bien, avec Gulp, nous pouvons effectuer toutes ces opérations en exécutant qu'une seule tâche ou une seule commande.
Mais pour la démonstration qui va suivre, nous allons effectuer les opérations suivantes :
- Compiler les fichiers SASS/SCSS.
- Rafraîchir automatiquement le navigateur après la génération du fichier CSS. C'est très utile quand on a 2 écrans : on voit le résultat de notre modification sans quitter son éditeur de code :).
Pour cela voici la marche à suivre :
1 - D'abord, il faut installer les modules à utiliser pour les différentes opérations que nous allons faire, il faut exécuter ces lignes de commande dans le répertoire racine de votre projet :
- Le module gulp-compass dont la documentation est disponible en suivant ce lien :
- Le module Browsersync dont la documentation est disponible en suivant ce lien :
2 - Déclarez au début du fichier gulpfile.js ces modules :
3 - Créez la tâche qui fait la transformation des fichiers sass en feuille de style :
Il faut remarquer qu'à la fin de cette tâche, on trouve la commande qui fait le rafraîchissement automatique du navigateur après la génération de la feuille de style.
4 - Créez une tâche qui initialise le module qui rafraîchit automatiquement le navigateur :
5 - Enfin, créez la tâche qui surveille les changements ou modifications effectués au niveau des fichiers sass :
C'est cette dernière tâche qu 'il faut exécuter pour effectuer automatiquement toutes les opérations citées au début. La commande qu'il faut faire est donc :
Après le lancement, voici le résultat :
Petite explication : au lancement de cette commande, il exécute d'abord les tâches browserSync et compass, et c'est après qu'il exécute le code dans la fonction callback. Pour cette dernière, la ligne de code a pour rôle de surveiller les changements effectués au niveau des fichiers scss et après exécuter la tâche "compass".
A partir de cet instant donc, à chaque fois que nous enregistrons les modifications effectuées dans un de nos fichier scss, la compilation se fait et le navigateur se rafraîchit automatiquement sans aucune intervention.
Conclusion
Cette petite démonstration n'est qu'une infime partie de ce que l'outil peut faire. Je vous recommande de l'utiliser car il pourrait vous faciliter la vie durant la phase de développement (ou phase de déploiement) d'un projet, que vous soyez développeur front-end ou développeur back-end.
Un commentaire