Des task runner pour automatiser vos process en JS

Le 11/08/2015

Dans Développement

Aujourd'hui, nous allons aborder un moyen de centraliser et d'automatiser la gestion de vos divers processus de développement et de build : les task runners.

Nos scripts et feuilles de style passent par un préprocesseur et sont minifiés, nos images sont compressées et transformées en sprites : le temps où les assets de nos projets pouvaient être fournis de la même manière en production et en développement est maintenant loin dernière nous. Si vous vous perdez dans votre liste de tâches à effectuer avant de pouvoir tester ou build vos projets, je vous propose de découvrir cette liste de task runners.

Grunt

Grunt est un peu l'ancêtre des tasks runner de cette liste. De loin le plus vieux, il est très largement utilisé, possède de nombreux plugins, et est assez bien documenté. Problème, Grunt est aussi assez lent pour les gros projets, et je trouve sa syntaxe verbeuse et peu agréable.

Grunt JS

Gulp

Gulp est une alternative à Grunt qui corrige tous les points manquants de Grunt. Beaucoup plus rapide (grace à l'utilisation des streams de Nodejs), la philosophie qui dicte sa syntaxe est "code over configuration", ce que je trouve très agréable.

Niveau doc, par contre, ça coince un peu : le site nous renvoie sur Github, ou un tutoriel nous explique en quelques étapes comment créer une tache qui ne fait rien (ce n'est pas une blague, je vous l'assure). Pour aller plus loin que "do-nothing", le doc nous envoie vers une liste d'articles.

Gulp js

Broccoli

Broccoli est le task runner que j'utilise actuellement. Son fonctionnement diffère des deux précédents par le fait qu'il travaille avec des dossiers et des arborescences plutôt qu'avec des fichiers directement. Assez proche de l'asset pipeline de Rails (ce qui explique peut-être pourquoi je l'ai préféré aux autres), sa documentation est un cran au-dessus de Gulp mais laisse tout de même à désirer. Sa vitesse est aussi comparable à Gulp, voir même un peu plus grande grâce au fait que Broccoli ne compile que les fichiers ayant été modifiés.

Enfin, dernier avantage, Broccoli possède une commande "serve", qui lui permet d'ouvrir un petit serveur local pour simplifier votre développement.

Broccoli js

Plumber

Plumber js

CoffeeScript

Coffeescript js

Gobble

Gobble js