Declarative gulp tasks composition and watching causality. Better with beverage.
Some of the functionality described below isn't implemented yet. See the trailing comments in the example about which parts that is.
Here is an example of how this would work:
var gulp = require('gulp');
// create task, two, three, more
require('gulp-cause')(gulp, [
'alias', 'task',
'both', {parallel: ['two', 'three']}, // not implemented yet
'sequence', {series: ['both', 'more']}, // not implemented yet
'task', ['src/*'], // shorthand, works fine in most cases (where watch is needed)
'two', [['src/*'], fn], // this array is gulp-watch args
'cool', {tasks: ['more'], watch: ['place/*']} // not implemented yet
]);
The code above instructs gulp-cause
to:
- make
alias
of an existingtask
- create task
both
to run taskstwo
andthree
in parallel - create task
sequence
to first run taskboth
(declared above), then taskmore
task:watch
will be created - anysrc/*
changes will causetask
to be runtwo:watch
usesgulp-watch
rather thangulp.watch
- documented further down- task
cool
watchesplace/*
files and can have any name, not justmore:watch
There must be an even number of causality pairs in the array. Having two items per line is good for readability. The left one is always a task name to either be created or invoked - depending on the right-hand-side. The data is processed one pair of items at a time, thus with each step one can depend on tasks from the previous steps. If no tasks existed to begin with, then gulp-cause
couldn't do a thing.
Using gulp.watch
by default, unless the watch value is more complex than an array of globs to watch. In such a case, gulp-cause
will interpret the array as a gulp-watch arguments list to be applied. See gulp-npm-test for example.
Which of the two is preferable depends on the use case.
npm test