Example projects that use this plugins:
- [generate-project][]
- [generate-engine][]
{%= include('install-npm', {save: true}) %}
trees(fn[, options]);
fn
{Function}: generator{generators.md} function ([Generate][], not es6)options
{Object|Array}: Options object or array of task names.
Register as a plugin, where app
is an instance of [generate][], [assemble][], [verb][], or [update][]:
app.use(trees(fn[, options]));
This creates a sub-generator named treeGenerator
, along with a few tasks on the sub-generator for controlling flow. The sub-generator tasks probably don't need to be accessed directly though.
A trees
task is added to app
for running the sub-generator, which builds the trees for the specified tasks.
Example
app.use(trees(fn, ['foo', 'bar', 'baz']));
app.build('trees', function(err) {
if (err) console.log(err);
});
Generated "dest" trees look something like this:
.
├─┬ test
│ ├─┬ fixtures
│ │ ├── content.tmpl
│ │ ├── default.tmpl
│ │ └── nothing.tmpl
│ └── test.js
├── .editorconfig
├── .gitignore
├── LICENSE
├── package.json
├── README.md
└── index.js
Diffs
When one of the tasks is named default
, diffs are generated automatically, and each diff is based on a comparison to the default.
.
-├─┬ test
-│ ├─┬ fixtures
-│ │ ├── content.tmpl
-│ │ ├── default.tmpl
-│ │ └── nothing.tmpl
-│ └── test.js
-├── .editorconfig
-├── .gitignore
-├── LICENSE
-├── package.json
-├── README.md
└── index.js
var project = require('generate-project');
var trees = require('verb-trees');
module.exports = function(app) {
// generate trees for the `default`, `minimal` and `gulp` tasks
app.use(trees(project, ['default', 'minimal', 'gulp']));
};
var path = require('path');
var trees = require('verb-trees');
var genFn = require('generate-project');
var del = require('delete');
module.exports = function(app) {
// register verb-generate-readme as a plugin
app.use(require('verb-generate-readme'));
// specify the tasks to run and generate trees for, from `generate-project`
app.use(trees(genFn, ['default', 'index', 'test']));
// delete temp files after the build is finished
app.task('delete', function(cb) {
del('.temp-trees', cb);
});
// run the `trees` task first, so the `readme` generator
// can use the trees as includes
app.task('default', ['trees', 'readme', 'delete']);
};