jeudi 14 novembre 2013

Yeoman, AngularJS and Bower, bower-install : gestion de dépendance

Dans le billet précédent, on a préparé l'environment de travail. Nous allons voir ici comment gérer les dépendances javascript.

Avant, il fallait

  • aller trouver sa librairie javascript et ses dépendances
  • les télécharger
  • les placer dans l'arborescence,
  • modifier son index.html pour référencer les fichiers
  • ...
Et si vous avez fait du Java avant l'existance de Maven, vous vous souvenez de l'enfer que pouvait être le conflis de version, la mise à jour d'une librairie ...

Bower va nous aider à resorber quelques uns de ces problèmes.


Pour se faire, il vous faut l'environment du billet précédent ainsi que grunt-bower-install

Step 1

npm install

Installer grunt-bower-install pour commencer. Ouvrir une console dans votre répertoire de travail et lancer la commande:

npm install grunt-bower install --save-dev


Gruntfile.js

Chargement de bower-install
Modifier le fichier Gruntfile.js de votre projet comme suit. Vous devriez avoir une fonction declarée :

module.export = function (grunt) {
...
}


Il faut charger grunt-bower-install dans ces environs. A la fin de la succession de 'require', ajouter la ligne magique pour avoir :

...
require('load-grunt-tasks')(grunt);
require('time-grunt')(grunt);
grunt.loadNpmTasks('grunt-bower-install');
...

Déclaration de bower-install
Si vous n'êtes pas perdu ici, il faudra ensuite declarer la tache bower-install dans le bloc grunt.initConfig.

Vous devrez passer de :


  grunt.initConfig({
    yeoman: {
      // configurable paths
      app: require('./bower.json').appPath || 'app',
      dist: 'dist'
    },
    watch: {
      coffee: {
        files: ['<%= yeoman.app %>/scripts/{,*/}*.coffee'],
        tasks: ['coffee:dist']
      },
...


A ce qui suit:
grunt.initConfig({
      'bower-install': {

        target: {

          // Point to the html file that should be updated
          // when you run `grunt bower-install`
          html: 'app/index.html',

          // Optional:

          // If your file paths shouldn't contain a certain
          // portion of a url, it can be excluded
          ignorePath: 'app/',

          // Customize how your stylesheets are included on
          // your page.
          //
          //   default: '<link rel="stylesheet" href="{{filePath}}" />'
          cssPattern: '<link href="{{filePath}}" rel="stylesheet">',

          // Customize how your <script>s are included into
          // your HTML file.
          //
          //   default: '<script src="{{filePath}}"></script>'
          jsPattern: '<script type="text/javascript" src="{{filePath}}"></script>'
        }
      },
    yeoman: {
      // configurable paths
      app: require('./bower.json').appPath || 'app',
      dist: 'dist'
    },
    watch: {
      coffee: {
        files: ['<%= yeoman.app %>/scripts/{,*/}*.coffee'],
        tasks: ['coffee:dist']
      },


index.html

Une dernière modification est à faire du coté de votre fichier index.html. Il faudra ajouter le tag suivant :

<!-- bower:js -->
<!-- endbower -->



Terminé!

Step 2

Ajoutons à présent une dépendance comme ngUpload

Dans la console :

bower install ngUpload --save

Cette commande installera le nécessaire pour vous mettre à dispo la librairie ngUpload et modifiera le fichier bower.json.

il faudra enfin lancer la commande:
grunt bower-install


Vous aurez à la fin la librairie ainsi que ses dépendances de telechargées. Elles seront aussi déclarées dans votre index.html.




PS : il est possible que vous tombiez sur un message "building is not supported on win32" sous Windows lors de l'utilisation de la commande npm install. Le bug est connu est une solution temporaire existe.



















dimanche 3 novembre 2013

Yeoman, AngularJS ....

Yeoman, grunt, angularJS ... ou l'industrialisation d'une application Web du coté client.

PS : tout ce qui suit a été fait sous Windows

Prérequis


Il faudra

Installer

  • Installer NodeJS en suivant les instructions, puis Ruby et pour finir Google Chrome
  • Ouvrir une console et taper 'gem install compass'. Cette commande installera Compass et sera utilisé pour la commande "grunt server" qui sera vue plus bas.


Configuration de variables d'environement

  • Ajouter NodeJS dans votre PATH afin d'invoquer npm plus facilement.
  • Créer une variable CHROME_BIN qui pointera vers l'executable de chrome (sera utilise pour la commande 'grunt test' qui sera abordé plus bas

Installer Yeoman 


Comme stipuler sur le site, en ligne de commande :
npm install -g yo
 
Maintenant installer le générateur associé à AngularJS:
npm install -g generator-angular


Préparer le projet

On va maintenant créer la structure de base du projet Web. En ligne de commande, ce mettre dans votre répertoire de travail puis taper:
yo angular

Et la c'est le drame. Vous tombez dans les abysse d'un Maven like qui tire semble tirez la terre entière .... mais en fait non.

Vous devez répondre à quelques questions telles que : "voulez vous bootstrap ?"

Une fois les questions répondu et que le programme vous a rendu l'otage qu'est votre console, vous aurez une arborescence proche de ce qui suit:


 


Grunt server

Pour avoir un premier retour de tout ce que nous venons de faire, aller dans le répertoire de votre projet avec la console  puis taper:
grunt server

Si votre navigateur se lance avec une page ayant pour contenu "Allo, Allo!", c'est que l'ensemble est plutôt bien configuré.
Cette commande vous sera très utile lors de l’édition de votre site. Elle permettra de voir le resultat du travail directement sans lancer de serveur tierce.

Grunt test

Si vous êtes développeur Backend, vous vous êtes toujours demandé comment tester ce code Javascript : grunt test

Cette commande permet de lancer des tests unitaires basés sur le framework Karma et va nous permettre ici d'une certaine façon de valider l'environement de travail.

Taper maintenant la commande:
grunt test

Si aucune erreur se produit, que votre navigateur se lance et la sortie console vous indique que l'ensemble des tests s'est effectué sans erreur, c'est que votre environnement de travail est prêt!

Petite touche finale de préparation : Font Awesome

Vous utilisez surement cette librairie dans vos projets. Pour l'utilisez dans le cadre de cette préparation : bower install --save font-awesome


... la suite dans un autre billet