yo, qu’est-ce que c’est ?
Aujourd’hui, quand on fait du développement web, et donc en particulier du JavaScript, il n’est plus possible de se passer de bons outils pour développer correctement. Yeoman est l’un d’entre eux. Cet outil est en fait une composition de trois outils :
- grunt, le ”Ant” du JavaScript, c’est-à-dire un exécuteur de tâches ;
- bower le gestionnaire de dépendances ;
- yo dont on va parler ici.
Yo est ce que l’on appelle un project scaffolder, que l’on pourrait traduire en français par “échaffaudeur de projet”. Ok, on n’est pas trop aidé. L’idée derrière ce genre d’outils est de générer le squelette d’une application en fonction d’un contexte donné. Un exemple tout bête : je souhaite démarrer une application avec AngularJS. Plutôt que de passer quelques minutes / heures à configurer les bases de mon projet, je vais utiliser un générateur yo
pour me faire ce travail. Une fois exécuté, je n’aurais alors plus qu’à développer mon projet, toutes les bases étant mises en place.
Installation de yo
L’utilitaire yo
s’installe via npm
, ce qui signifie qu’il vous faudra installer NodeJS si ce n’est déjà fait. Une fois installé, il suffit de lancer la commande npm install -g yo
(l’option -g
assure une installation globale au système) pour que yo
soit installé. Un petit yo -v
nous assurera de sa bonne installation.
Utiliser un générateur yo
Concrètement, yo
va faire appel à un générateur spécifique pour générer le squelette de notre application. Si je tape simplement yo
dans ma console, celui-ci va me propose quelques options (le nombre d’options va dépendre de ce qui est installé sur ma machine) :
1 2 3 4 5 6 7 8 9 10 |
|
Comme vous le voyez, les choix qui s’offrent à moi sont soit l’exécution d’un générateur, soit la mise à jour ou l’installation de nouveaux générateurs.
Normalement, seuls les deux premiers générateurs (générateur de générateur yo
et générateur d’applications web) sont disponibles initialement.
Admettons que nous voulons créer une application AngularJS. Nous allons donc faire appel au générateur Angular. Deux options s’offrent à nous :
- Passer par la commande
npm install -g generator-angular
, qui installera le générateur ; - Passer par la ligne de commande de
yo
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
Dans les deux cas, c’est bien npm
qui va s’exécuter pour installer le générateur.
Pour lancer la génération, c’est la même chose : soit nous exécutons la commande yo angular
(le nom du générateur, sans le generator-
devant), soit nous passons par la commande yo
et on se laisse guider par l’outil. Attention, yo
génère les sources de l’application dans le répertoire courant, pensez donc à créer un sous-répertoire avant.
Là, en fonction du générateur, un certain nombre de questions vont nous être posées, par exemple pour savoir si nous voulons utiliser SASS ou Bootstrap :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
Une fois la commande terminée, nous diposons d’un répertoire bien configuré. Il est parfois requis d’exécuter les commandes npm install
(pour installer les contributions Grunt) et bower update
(pour télécharger les dépendances de l’application) afin d’être tout à fait prêt, mais normalement le générateur va se charger de cette opération.
Voici les principaux éléments de structure de l’application générée :
1 2 3 4 5 6 7 8 9 |
|
Comme on peut le voir, yo
fait appel à ses deux copains de yeoman
pour travailler : Bower
et Grunt
.
En tapant par exemple grunt serve
, Grunt
va exécuter quelques tâches et démarrer un serveur :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
Grâce à la tâche livereload de Grunt
, chaque modification du code va entraîner le rechargement automatique de la page :
1 2 3 4 5 |
|
Comme je le disais plus haut, cela prend à peine une minute, et au final, nous disposons d’une application prête pour le développement.
Créer son propre générateur
Bien qu’il existe tout un tas de générateur, il peut arriver le besoin d’en créer un soi-même. C’est le rôle du generator-generator
, qui comme son nom l’indique, génère le squelette d’un générateur. Je vais faire un peu ma faignasse, mais je vais profiter de l’excellente présentation réalisée par Thierry Lau sur ce sujet :
http://lauterry.github.io/prez-yeoman-generator/
Pour résumer, si vous devez vous lancer dans un projet, plutôt que de perdre du temps, passez vite à yo !