Troisième article consacré à cette série, nous allons aujourd'hui nous pencher sur Node Boilerplate et à la mise en en place du squelette de notre appli Node.

Inspiré par HTML5 Boilerplate, Rob Righter eut l'idée de créer un outil permettant de générer tout ce dont nous pouvons avoir besoin pour mettre en place une appli ou un site Node.

Fondamentalement, ce projet permet de:

  1. Stopper la répétition induite à chaque début de projet.
  2. Restreindre les dépendances (librairies et modules) au répertoire du projet. Ne rien installer en dehors de ce répertoire (Déploiement en prod. facilité)
  3. Faciliter l'installation de modules additionnels au sein du projet.
  4. Générer facilement un squelette pour notre application node.js avec Express.js, Socket.IO et HTML5 Boilerplate, intégré pour vous via templates ejs.

Lorsque l'on initialise un projet, ceci configure un nouveau répertoire avec une application web fonctionnelle utilisant express et socket.IO, initialise un nouveau repository git et effectue le premier commit. Vous pouvez toujours ajouter de nouveaux modules dans le répertoire lib de votre projet, ils seront alors rendu disponible pour inclusion dans votre nouveau projet sans avoir à se soucier de chemins relatifs.

Suite à cette brève présentation de node-boilerplate, penchons nous maintenant sur sa prise en main.

Récupérer les sources

Cet article part du principe que vous disposez de Git installé en local afin d'avoir la possibilité de cloner le projet et de gérer les dépendances (dans sa dernière version, préférable pour la gestion des modules en mode récursif, ce que nous verrons plus tard). En effet, node-boilerplate utilise Git et sa fonction submodule pour gérer les dépendances du projet. Le script d'installation, que nous verrons par la suite, utilise des commandes git pour mettre en place votre structure de projet.

Aussi, si vous souhaitez suivre ce tutorial et que vous ne vous êtes toujours pas mis à Git, c'est le moment de s'y mettre ;). De nombreux articles et guides sont maintenant disponibles sur internet, notamment sur le site de github. Si vous êtes à la recerche de ressources francophones, assurez vous de faire un tour sur git-attitude.

Commençons par cloner le projet. Vous pouvez le faire pour le répertoire de votre choix, il suffit d'adapter la commande ci-dessous en prenant soin de modifier mynewproject par le nom de votre projet (si non spécifié, le répertoire prendra le nom du projet github cloné, ici node-boilerplate). Les instructions du README sont plutôt explicites.

Ceci permettra de télécharger sur votre poste local les sources de node-boilerplate.

Vous devriez voir l'arborescence suivante:

Elle contient notamment les répertoires /lib et /bin, le premier contenant les modules socket.IO, socket.IO-node, Express et HTML5 Boilerplate qui ne sont pour l'instant que des répertoires vides, le second contenant le script d'installation initproject.sh dont vous pouvez voir le contenu ci-dessous.

Script d'installation

Ce script parle presque de lui-même. L'instruction la plus importante étant la première:

Cette commande permet d’initialiser les repository de chaque module et de les mettre à jour (téléchargement des sources). Ceci est fait récursivement, pour que vous n'ayez pas à gérer inutilement l'init et update de chaque dépendance.

Cette commande revient à (version non récursive):

Veuillez noter que j'ai éprouvé quelques difficultés, une fois sur le serveur distant, à initialiser les submodules de manière récursive. Ceci étant dû (je suppose) à la version de git installé sur mon serveur partagé (1.5.4.3 vs 1.7.0.3 en local). Ceci dit, rien d'insurmontable, soit vous effectuez la mise à jour de git vers une version plus récente (en recompilant les sources et configurant l'environnement), soit vous la jouer plus feignant (encore que...) et faîtes la manip git submodule init / git submodule update pour chaque dépendance et sous dépendance de votre projet (un poil longuet pour avoir choisi l'option feignant...).

Lançons donc le script d'install via la commande suivante, depuis la racine de votre projet:

Le téléchargement de chacun des submodules peut prendre un peu de temps, et votre terminal deviendra très verbeux, avec à la fin quelque chose comme:

Que le squelette soit

Ok, nous avons désormais une appli Node prête et fonctionnelle qui utilise express et socket.IO, avec un repository git tout neuf et le premier commit effectué. Il ne reste plus qu'a exécuter la commande 'node server.js':

Vous pourrez voir ce que cela donne en visitant http//localhost:8081

node-boilerplate est fourni avec une configuration d'express par défaut, facilement adaptable et représentant un très bon point de départ:

node-boilerplate est vraiment un super outil. Il prend html5-boilerplate, express, connect et socket.IO et les organise en une appli prête à l'emploi. C'est un moyen rapide et efficace pour commencer à travailler sur un projet Node sans avoir à se soucier de sa configuration. Il prend soin de toutes les parties ennuyeuses et répétées à chaque début de projet comme configurer les vues, les page 404/500, organiser les modules, etc.

Finalement, ce tutorial n'est qu'une présentation de cet outil, que je trouve formidable, et pourrait tenir en trois lignes:

Un grand merci à Rob Righter d'avoir eu l'idée node-boilerplate et la gentillesse de la partager!