Skip to content

Latest commit

 

History

History
85 lines (64 loc) · 2.1 KB

.verb.md

File metadata and controls

85 lines (64 loc) · 2.1 KB

Usage

var tree = require('{%= name %}');

gulp plugin example

The following examples will work with [base-fs][], [gulp][], [verb][], [assemble][], [generate][], [update][] or any other application that supports vinyl streams.

var tree = require('base-fs-tree');
var gulp = require('gulp');

gulp.task('default', function(cb) {
  return gulp.src('some-files/**/*.*')
    .pipe(tree.create())
    .pipe(gulp.dest('trees'))
});

Get files before they're modified

If you want to create a tree from the original unmodified source file paths, use .capture() first thing in the stream:

var tree = require('base-fs-tree');
var gulp = require('gulp');

gulp.task('default', function(cb) {
  return gulp.src('some-files/**/*.*')
    .pipe(tree.capture()) //<= capture files

    // gulp plugin pipeline
    .pipe(otherPlugins())
    .pipe(gulp.dest('dist')) 

    .pipe(tree.create()) //<= create tree
    .pipe(gulp.dest('trees'))
});

Command line tips

You can conditionally generate trees using a command line flag, like --tree.

var tree = require('base-fs-tree');
var gulp = require('gulp');
var argv = require('yargs-parser')(process.argv.slice(2), {
  default: {tree: false}
});

gulp.task('default', function(cb) {
  return gulp.src('some-files/**/*.*')
    .pipe(tree.create(argv))
    .pipe(gulp.dest('trees'))
});

base plugin example

This can also be used as a non-pipeline plugin with [base][] applications. It works by adding .preWrite middleware and a taskEnd listener, so that anytime taskEnd is emitted, a tree will be automatically generates.

This can be useful when you want to automatically generate trees for all tasks in a [generate][] generator, for example.

var tree = require('base-fs-tree');
var vfs = require('base-fs');
var Base = require('base');
var base = new Base();
base.use(vfs());
base.use(tree());

app.task('default', function(cb) {
  app.src('some-files/**/*.*')
    .pipe(app.dest('trees'))
    .on('end', function() {
      // emit `taskEnd` with the name of the task
      app.emit('taskEnd', 'default');
      cb();
    });
});