Un nouveau projet vient d'apparaître récemment sur Github, se décrivant comme le système de build nouvelle génération. Fly repose en effet sur les générateurs et les promesses introduites par la norme ECMAScript 6 (alias ES 2015). L'utilisation de ces nouveautés permet d'obtenir une API quasi transparente, où les tâches sont décrites simplement comme un module exportant une fonction. On retrouve ainsi une syntaxe similaire aux steams de Gulp, mais beaucoup plus claire et concise.
Exemple de Flyfile :
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | const paths = { scripts: ["src/**/*.js", "!src/ignore/**/*.js"] } exports.default = function* () { yield this.tasks.clean() yield this.tasks.scripts() yield this.watch([paths.scripts]) } exports.clear = function* () { yield this.clear("build") } exports.scripts = function* () { yield this .source(paths.scripts) .babel({/* options */}) .uglify({/* options */}) .concat("all.min.js") .target("build/js") } |
Le projet est encore très jeune, mais il donne un bon aperçu des nouvelles possibilités offertes par ES6/ES7. En limitant les tâches à de simples modules retournant une fonction, Fly devrait simplifier l'écriture de tâches et surtout favoriser leur interopérabilité. En effet, la multiplication des task runners n'a pas vraiment permis de standardiser la notion de tâche. Beaucoup choisissent encore leur système de build selon le nombre de modules disponibles, malgré diverses solutions d'adapteurs pour migrer de l'un vers l'autre. On peut espérer que les modules ES6 s'imposent d'eux-mêmes à ce titre de standard, et soient utilisables par tous les task runners populaires.
Fly s'exécute sur NodeJS et est distribué sous licence MIT. L'auteur du projet et principal contributeur est Jorge Bucaran, connu pour être l'organisateur des meetup TokyoJS.
Répertoire Github du projet.
Et vous ?
Utilisez-vous un système de build et lequel ?
Que pensez-vous de l'utilisation des générateurs ES6 pour ce type de solutions ?