É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 !
$ npm install --save-dev plop
{
"name": "your-awesome-project",
"description": "An awesome project",
"devDependencies": {
"plop": "1.4.1"
},
"scripts": {
"generate": "plop"
}
}
$ npm run generate
$ npm install -g plop
$ plop
Global
Local
Plop a besoin d'un plopfile.js
et de templates.
module.exports = function (plop) {};
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
}
} );
plop.addHelper( name, helper );
plop.addPartial( name, template );
Dans plopfile.js
:
module.exports = function ( plop ) {
plop.setGenerator( "module", {
description: "create a new module",
prompts: [],
actions: []
} );
};
plop.setGenerator( name, config );
Création
Utilisation
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 !
module.exports = function ( plop ) {
plop.setGenerator( "module", {
description: "create a new module",
// …
actions: [
{
type: "add",
path: "modules/{{camelCase name}}.js",
templateFile: "templates/module.js"
}
]
} );
};
2 types d'actions :
Strings parsées avec Handlebars
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 :
prompts
en paramètrePermet d'adapter les actions en fonction des réponses données
Léger, embarqué dans le projet = maintenance plus simple
Simple à prendre en main, plus facilement adopté car peu coûteux
Plop
Yeoman
KISS = commencer avec plop, compliquer au besoin.
Blog post : http://bit.ly/22hX160