Un peu dâinteractivitĂ© dans vos outils node
Je vous expliquais il y a peu comment construire ses propres outils en ligne de commande avec node et npm : http://k33g.github.io/2014/05/09/NPM-NODE-CLI.html. Nous allons voir aujourdâhui comment ajoutĂ© un peu dâinteractivitĂ© et de couleur Ă tout ça. Donc, il faut repartir du mĂȘme projet (donc lire lâarticle).
2 nouveaux modules : prompt et colors.js
Lorsque je parle dâinteractivitĂ©, je veux dire, que mon âprogrammeâ va âme poserâ des questions auxquelles je vais devoir rĂ©pondre. Pour cela je vais utiliser prompt (https://github.com/flatiron/prompt), et pour les couleurs, le bien nommĂ© colors.js (https://github.com/Marak/colors.js). Modifiez donc votre fichier package.json
de la maniĂšre suivante :
{
"name": "bbtools",
"version": "0.0.0",
"bin": { "bb": "bb.js"},
"dependencies": {
"underscore": "1.6.0",
"prompt": "0.2.12",
"colors": "0.6.2"
}
}
Puis faites moi un petit npm install
pour télécharger les 2 nouvelles dépendances.
Modification de bb.js
Maintenant, plutĂŽt que de passer le nom du modĂšle en argument, je souhaite que ce soit lâoutil qui demande le nom du modĂšle, je voudrais aussi pouvoir saisir les valeurs par dĂ©faut du modĂšle. Nous allons donc modifier le code du fichier bb.js
de la façon suivante :
Ajout des référence à prompt et colors:
Ici on ne change rien:
Ajout dâun âschemaâ de saisie pour prompt:
Vous notez que vous avez âla mainâ sur ce que vous pouvez ou n pouvez pas saisir. Ensuite, notez aussi ceci : 'Enter model name'.green
ou 'Model name must be only letters'.inverse.red
et encore 'Default values'.blue
, câest colors.js qui permet en augmentant les strings de dĂ©finir les couleurs dâaffichage des textes dans votre console ou terminal.
Utilisation du âschemaâ de saisie:
Il suffi de passer Ă prompt.get()
votre schema
ainsi que la fonction à exécuter avec comme paramÚtres les erreurs (err
) et les données saisies (result
). result
est un objet qui a pour propriétés les propriétés de schema.properties
donc model_name
et default_values
Modification du template bb.tpl
Nous modifions le template pour prendre en compte la nouvelle valeur defaultValues: result.default_values
:
/*--- <%= modelName %> Model ---*/
var <%= modelName %>Model = Backbone.Model.extend({
defaults : function (){
return {<%= defaultValues %>}
},
urlRoot : "<%= modelName.toLowerCase() %>s"
});
/*--- <%= modelName %>s Collection ---*/
var <%= modelName %>sCollection = Backbone.Collection.extend({
url : "<%= modelName.toLowerCase() %>s",
model: <%= modelName %>Model
});
Utilisation
Dans un terminal, tapez bb
et répondez (trompez vous aussi) :
Avec le code généré :
Câest tout simple, un peu plus âuser friendlyâ, et bientĂŽt vous pourrez refaire Yeoman ;).
Bonne journée!
Tweet