Slides de la présentation Grunt, Bower, Yeoman ou comment automatiser un projet web SPA aux Microsoft TechDays 2015.
Introduction aux outils Grunt, Bower, Yeoman et en quoi ils sont liés.
Dans cette session, nous présenterons les bienfaits de l'automatisation, notamment dans les projets web complexes.
4. tech.days 2015#mstechdays
Gestion des dépendances
Compilation / Minification / Tests / Linting
Développement
Tâches récurrentes d’un projet web
Comment automatiser le développement d'un projet web SPA
5. tech.days 2015#mstechdays
Node.JS
Scripts simples mais puissant
Projet web donc javascript !
Outils d’automatisation
Comment automatiser le développement d'un projet web SPA
6. tech.days 2015#mstechdays
Bower ?
Grunt ?
Yeoman ?
Outils d’automatisation
Comment automatiser le développement d'un projet web SPA
8. tech.days 2015#mstechdays
Gestionnaire de librairies JS / CSS
Utilisé pour installer et mettre à jour les librairies
Assure l’intégrité des versions
Définition
Comment automatiser le développement d'un projet web SPA
9. tech.days 2015#mstechdays
Registre de librairies JS / CSS
Enregistre les versions dans un fichier bower.json
Arbre de dépendances plat
Comment ça marche ?
Comment automatiser le développement d'un projet web SPA
13. tech.days 2015#mstechdays
Gestionnaire de tâches Node.JS
Automatise les tâches récurrentes
Enormément de tâches dans NPM
Définition
Comment automatiser le développement d'un projet web SPA
14. tech.days 2015#mstechdays
Configuration dans un fichier Gruntfile.js
Tâches dans NPM ou en local
Simple !!
Comment ça marche ?
Comment automatiser le développement d'un projet web SPA
19. tech.days 2015#mstechdays
Gestionnaire de template de projets
Simplifie la création de projet et d’éléments
Force l’utilisation de bonnes pratiques
Définition
Comment automatiser le développement d'un projet web SPA
20. tech.days 2015#mstechdays
Générateurs dans NPM
Utilise Bower pour gérer les dépendances
Utilise Grunt pour gérer les tâches de compilation
Comment ça marche ?
Comment automatiser le développement d'un projet web SPA
21. Yeoman
# install yeoman
$ npm install –g yo
# install generator
$ npm install –g generator-backbone
# run generator
$ yo backbone
# run sub generator
$ yo backbone:model user
24. Create a simple Grunt Task
module.exports = function (grunt) {
grunt.registerTask("myCustomTask", function () {
// read package.json to get version
var pkg = grunt.file.readJSON("package.json");
// get the version.js content
var content = grunt.file.read("version.js");
// replace the tag {{version}} by the package’s version
content = content.replace("{{version}}", pkg.version);
// write the new content into version.js
grunt.file.write("version.js", content);
});
};
25. Create a multi Grunt Task
module.exports = function (grunt) {
grunt.registerMultiTask("myVersionTask", function () {
var pkg = grunt.file.readJSON("package.json");
// loop over configured files
this.files.forEach(function (file) {
// loop over src / dest match
file.src.forEach(function (src) {
var content = grunt.file.read(src);
content = content.replace("{{version}}", pkg.version);
grunt.file.write("version.js", file.dest);
});
});
});
};
26. Create a multi Grunt Task
module.exports = function (grunt) {
grunt.initConfig({
// task config
myVersionTask: {
dist: {
src: "app/**/*.js",
dest: "dist/"
}
}
});
// load task from local directory
grunt.loadTasks("tasks");
// alias task
grunt.registerTask("build", ["myVersionTask:dist"]);
};
34. tech.days 2015#mstechdays
Slides :
http://fr.slideshare.net/Touchify/grunt-bower-yeoman-ou-comment-
automatiser-un-projet-web-spa
Démo :
https://github.com/spatools/techdays2015
Documentations :
http://bower.io http://gruntjs.com http://yeoman.io
Liens
Comment automatiser le développement d'un projet web SPA
Projets web moderne
Beaucoup de librairies
Beaucoup de Javascript
Nécessité plus grande de travailler le javascript (compilation, concaténation, minification)
Beaucoup de librairies = long et fastidieux de gérer les versions
Beaucoup de javascript = énormément de tâches pour maintenir le javascript sain et léger
Tâches répétitives dans le développement = énormément de tâches répétitives (modèles, viewmodels, views, configuraiton)
Node.JS ? NPM ?
On fait du web donc on fait du javascript
Simple et puissant (beaucoup de package dans NPM)
Gestionnaires de librairies au même titre que NuGet ou NPM
Gère les versions et les dépendances
Registre pour recherche et informations sur les packages
Évite d’enregistrer les versions sur le repo
Requiert une seule version pour chaque package pour assurer la rapidité de chargement des page et force la vérification de la compatibilité des versions
Exemples de générateurs :
Webapp
Angular
MEAN
Backbone
Ember
Durandal
Bien fait Bonne pratiques
Maintient des bonnes pratiques grâces aux sub generators
Beaucoup de générateurs
Basé sur bower et grunt donc réutilisation des compétences
Run yo backbone in tmp
0.0.1 grunt serve
Run yo backbone:models user view router
0.0.3 grunt serve
Run model repository collection userrepo view repository
0.0.6 grunt serve
0.1.0 grunt serve (si -30min)