undertaker-runonce-registry
v0.0.1
Published
This is a hacky hack that allows to declare tasks dependencies in a logical way without having to sweat about the calling chain to avoid the same task being called twice in a build, (almost) the same way you did with [Makefile](https://www.gnu.org/softw
Readme
undertaker-runonce-registry
This is a hacky hack that allows to declare tasks dependencies in a logical way without having to sweat about the calling chain to avoid the same task being called twice in a build, (almost) the same way you did with Makefile, Ant, MSBuild, Rake, Phing or even Gulp 3.
There is no supported way to do this easily with gulp 4+ and no entry point to add this functionality in a smooth way, hence the hack. Use with caution: I cannot guarantee support, and it may break gulp in the future.
Usage
You have to plug this new registry. Then the dependencies that should be executed only once should be:
- registered as gulp tasks with a specific method on this registry (
instance.task) with an additionaltrueparameter. - referenced with their string name.
import { registry, series, task } from 'gulp';
import RunOnceRegistry from 'undertaker-runonce-registry';
const ro = new RunOnceRegistry();
registry(ro);
function prepare(done) {
console.log('prepare()');
done();
}
ro.instance.task(prepare, true);
function doX(done) {
done();
}
function doY(done) {
done();
}
function doZ(done) {
done();
}
export const build1 = series('prepare', parallel(doX, doY));
export const build2 = series('prepare', parallel(build1, doZ)); // prepare should be only executed once