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/javascriptsdu 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