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.

@+

blog comments powered by Disqus

Related posts