Usine JS : générer votre squelette de projet Javascript & Express.js avec GIMME
DĂšs que vous voulez crĂ©er un projet javascript de webapp, il faut crĂ©er une arborescence, aller chercher les librairies javascript qui vont bien Ă droite Ă gauche sur internet ⊠Câest ennuyeux.
Pour rĂ©gler ce petit tracas, je vous conseille lâutilisation du âingeniously simpleâ Gimme de @mklabs que vous trouverez ici : https://github.com/mklabs/gimme-assets avec un article dâexplication en français par son auteur : http://blog.mklog.fr/articles/just-gimme-web-assets-please/.
Eh! Mais quâest ce que câest ? Alors Gimme câest un utilitaire en mode commande qui permet dâaller tĂ©lĂ©charger les librairies javascript rĂ©fĂ©rencĂ©es sur des repositories officiels, vous permettant dâavoir les derniĂšres versions et cela sans aucun effort.
Comment ça marche ? ⊠je résume
Problématique :
Je veux installer dans le répertoire lib
de ma webapp mes frameworks js préférés : jQuery, Underscore, Backbone et Tempo (pour le templating, je le préfÚre à Mustache).
Solution : ⊠avec Gimme
Tapez simplement ceci :
gimme install jquery underscore.js backbone.js tempo -o ./lib
Remarque : dĂšs fois il y a â.jsâ Ă la fin et dĂšs fois non ! Câest normal, tout dĂ©pend de comment les librairies ont Ă©tĂ© rĂ©fĂ©rencĂ©es dans les repositories auxquels se connectent Gimmme, pour avoir lâensemble des noms vous pouvez tapez la commande gimme list
.
Oui mais moi mon projet câest du Express.js, ça va pas le faire !?
Ben si !, un des petits trucs sympathique de Gimme, câest que vous pouvez Ă©crire vos propres commandes (allez lire lâarticle de @mklabs câest trĂšs bien expliquĂ©.
Problématique :
Je veux :
- générer une application express.js
- mettre à jour les dépendances
- installer ejs (pour le templating, je préfÚre à jade)
- installer toutes mes libs clients dans le répertoire
/public/javascripts
du projet express.js
Solution : ⊠avec Gimme
Dans le répertoire ` ~/.gimme/commands (si
commands n'existe pas créez le), créez un fichier
mystack.js` avec le code suivant :
module.exports = mystack_cmd;
var fs = require('fs')
, path = require('path')
, exec = require('child_process').exec;
mystack_cmd.usage = "gimme mystack <appname>";
mystack_cmd.description = ['my personnal express.js boilerplate', "@k33g_org"];
function launch(cmd, cb) {
exec(cmd, function(err, stdout, stderr) {
if (err) {
console.log(err);
throw err;
}
else {
console.log(cmd+ " -> OK");
if(cb) cb();
}
});
}
function mystack_cmd (opts, cb) {
var appname = opts.argv.remain.slice(1)[0];
launch("express " + appname, function() {
launch("cd " + appname + " && npm install -d", function(){
launch("cd " + appname + " && npm install ejs", function() {
console.log(appname + " has been created.")
});
});
});
}
Et maintenant pour gĂ©nĂ©rer mon application âbobisthekingâ, en mode commande :
gimme mystack bobistheking
gimme install jquery underscore.js backbone.js tempo -o ./bobistheking/public/javascripts
Et voilĂ !!! En quelques secondes votre projet dâapplication est prĂȘt, et vous pouvez utiliser votre nouvelle commande Ă volontĂ©.
Pistes dâamĂ©lioration
- vous pourriez tout mettre ensuite dans un script shell
- faire une commande qui vous génÚre les pages html de démarrage de votre projet
- etc. âŠ
En tous les cas, dites vous que vous avez gagnĂ© du temps et que vos projets seront tous structurĂ©s de la mĂȘme façon.
@+
Tweet