Faites vos outils avec npm et node
Lorsque je code, jâai souvent des tĂąches rĂ©pĂ©titives (quel que soit le langage), ie:
- Ă©crire des modĂšles et des collections Backbone
- Ă©crire des modĂšles Play
- Ă©crire des routes pour Express.js
- âŠ
Nul doute, que vous avez Ă©normĂ©ment dâautres exemples en tĂȘte. Lâoutil du moment pour rĂ©gler ce type de problĂšme est Yeoman (oui il y en a dâautres, mais Yeoman câest âhypeâ ;)) et ensuite, ou vous avez de la chance, ou il faut Ă©crire le plugin dont vous avez besoin. Dans certains cas, surtout si vous nâavez pas besoin de quelque chose de complexe, vous pouvez rapidement Ă©crire un utilitaire avec uniquemnt node et npm.
Spécifications (par exemple)
Je passe mon temps Ă Ă©crire des modĂšles et des collections Backbone qui ressemblent Ă ceci :
Et jâaimerais aller plus vite, juste taper bb Human
et obtenir mon fichier généré.
Juste fais-le âŠ
package.json
Commencez par créer un répertoire bbtools
. Ensuite dans ce répertoire, créez un fichier package.json
avec le contenu suivant :
{
"name": "bbtools",
"version": "0.0.0",
"bin": { "bb": "bb.js"},
"dependencies": {
"underscore": "1.6.0"
}
}
Lâobjectif Ă©tant de disposer dâune commande bb
qui exécutera le fichier bb.js
. Notez "underscore": "1.6.0"
, nous allons nous servir des capacitĂ©s de âtemplatingâ de la librairie Underscore
Notre template
CrĂ©ez (dans le mĂȘme rĂ©pertoire) un fichier bb.tpl
avec le contenu suivant :
Le code applicatif
CrĂ©ez (dans le mĂȘme rĂ©pertoire) un fichier bb.js
avec le contenu suivant :
# Explications
# !/usr/bin/env node
: rendra le fichier exécutable_.template(require("./bb.tpl"))
va lire notre fichierbb.tpl
et le transforme en objet template pour Underscoreprocess.cwd()
permet de connaĂźtre le rĂ©pertoire dâoĂč lâon appelle la commandebb
process.argv[2]
permet dâobtenir le 1er argument passĂ© Ă la commandebb
(comme par exemplebb Human
)tpl({modelName :model_name })
: on âexpliqueâ au template que lâon passe le contenu demodel_name
ĂmodelName
définie dans le template
Enregistrez votre outil
Pour que votre nouvelle commande soit disponible âpartoutâ (pouvoir lâappeler de nâimporte quel rĂ©pertoire), tapez la commande suivante (on est toujours dans notre rĂ©pertoire de dĂ©veloppement) :
npm link
Si ce nâest pas dĂ©jĂ fait, cela va tĂ©lĂ©charger les dĂ©pendances nĂ©cessaires (underscrore dans notre cas), puis crĂ©er un âlien symboliqueâ vers votre fichier bb.js
Maintenant, de nâimporte oĂč, dans une console (terminal), vous pouvez taper bb Animal
et cela vous génÚrera votre fichier Animal.js
avec votre modĂšle et votre collection.
VoilĂ , câest trĂšs simple et utile. Si vous sentez que votre outil devient une usine Ă gaz, passez quand mĂȘme Ă Yeoman ;).
Tweet