Plop : un micro-générateur pour se simplifier la vie au quotidien. Talk présenté le 21 décembre 2015 au meetup Node.js Paris Chapitre 3 / Conférence 2.
3. 3 . 1
KEZAKOKEZAKO PLOPPLOP
> UN MICRO-GÉNÉRAQUOI ?> UN MICRO-GÉNÉRAQUOI ?
4. 3 . 2
GÉNÈRE DEGÉNÈRE DE NOUVEAUX FICHIERSNOUVEAUX FICHIERS À PARTIR DEÀ PARTIR DE TEMPLATESTEMPLATES
Évite d'aller copier/coller un autre fichier « similaire » (lequel ?),
puis supprimer les lignes inutiles et déclarer tout ça où il faut
(sans se tromper ?)
On écrit plop, on répond à quelques questions et TADAAA !
5. 3 . 3
GAIN DE TEMPSGAIN DE TEMPS && MOINS D'ERREURSMOINS D'ERREURS AU QUOTIDIENAU QUOTIDIEN
9. 4 . 4
LES TEMPLATESLES TEMPLATES
C'est du !Handlebars
/**
* TODO - Describe what your model does.
*
* @class {{pascalCase name}}.Model
* @module {{pascalCase name}}
* @constructor
*/
import {Model} from "backbone";
export default Model.extend( {
initialize() {
// Executed on model initialization
}
} );
On a accès :
aux variables du prompt
aux / définishelpers partials
plop.addHelper( name, helper );
plop.addPartial( name, template );
Dans plopfile.js :
10. 4 . 5
CRÉER UN GÉNÉRATEURCRÉER UN GÉNÉRATEUR
module.exports = function ( plop ) {
plop.setGenerator( "module", {
description: "create a new module",
prompts: [],
actions: []
} );
};
plop.setGenerator( name, config );
Création Utilisation
11. 4 . 6
GÉNÉRATEURGÉNÉRATEUR −− PROMPTSPROMPTS
module.exports = function ( plop ) {
plop.setGenerator( "module", {
description: "create a new module",
prompts: [
{
type: "input",
name: "name",
message: "What is your module name?",
validate: function (value) {
if ((/.+/).test(value)) { return true; }
return "name is required";
}
}
],
// …
} );
};
C'est du !Inquirer
13. 4 . 8
GÉNÉRATEURGÉNÉRATEUR −− ACTIONSACTIONS
actions: function( data ) {
var actions = [];
if( data.wantTacos ) {
actions.push( {
type: "add",
path: "folder/{{dashCase name}}.txt",
templateFile: "templates/tacos.txt"
} );
} else {
actions.push( {
type: "add",
path: "folder/{{dashCase name}}.txt",
templateFile: "templates/burritos.txt"
} );
}
return actions;
}
actions peut aussi être une
fonction qui :
prend les réponses de
prompts en paramètre
retourne le tableau des
actions à effectuer
Permet d'adapter les actions en
fonction des réponses données
14. 5 . 1
POURQUOIPOURQUOI PLOP ?PLOP ?
> ET POURQUOI PAS> ET POURQUOI PAS YEOMANYEOMAN HEIN ?HEIN ?
15. 5 . 2
AVANTAGESAVANTAGES DE PLOP SUR YEOMANDE PLOP SUR YEOMAN
Léger, embarqué dans le projet = maintenance plus simple
Simple à prendre en main, plus facilement adopté car peu coûteux
16. 5 . 3
DES USE CASESDES USE CASES DIFFÉRENTSDIFFÉRENTS
scaffold un nouveau projet
selon des standards
bootstrap de nouveaux
fichiers dans le cadre de
ce projet (standard)
PlopYeoman
bootstrap de nouveaux fichiers
selon les standards
personnalisés d'un projet
KISS = commencer avec plop, compliquer au besoin.
17. 6
MERCI !MERCI ! DES QUESTIONS ?DES QUESTIONS ?
Plop : https://github.com/amwmedia/plop
Blog post : http://bit.ly/22hX160