56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
'use strict';
|
|
|
|
var util = require('util');
|
|
var Undertaker = require('undertaker');
|
|
var vfs = require('vinyl-fs');
|
|
var watch = require('glob-watcher');
|
|
|
|
function Gulp() {
|
|
Undertaker.call(this);
|
|
|
|
// Bind the functions for destructuring
|
|
this.watch = this.watch.bind(this);
|
|
this.task = this.task.bind(this);
|
|
this.series = this.series.bind(this);
|
|
this.parallel = this.parallel.bind(this);
|
|
this.registry = this.registry.bind(this);
|
|
this.tree = this.tree.bind(this);
|
|
this.lastRun = this.lastRun.bind(this);
|
|
this.src = this.src.bind(this);
|
|
this.dest = this.dest.bind(this);
|
|
this.symlink = this.symlink.bind(this);
|
|
}
|
|
util.inherits(Gulp, Undertaker);
|
|
|
|
Gulp.prototype.src = vfs.src;
|
|
Gulp.prototype.dest = vfs.dest;
|
|
Gulp.prototype.symlink = vfs.symlink;
|
|
Gulp.prototype.watch = function(glob, opt, task) {
|
|
if (typeof opt === 'string' || typeof task === 'string' ||
|
|
Array.isArray(opt) || Array.isArray(task)) {
|
|
throw new Error('watching ' + glob + ': watch task has to be ' +
|
|
'a function (optionally generated by using gulp.parallel ' +
|
|
'or gulp.series)');
|
|
}
|
|
|
|
if (typeof opt === 'function') {
|
|
task = opt;
|
|
opt = {};
|
|
}
|
|
|
|
opt = opt || {};
|
|
|
|
var fn;
|
|
if (typeof task === 'function') {
|
|
fn = this.parallel(task);
|
|
}
|
|
|
|
return watch(glob, opt, fn);
|
|
};
|
|
|
|
// Let people use this class from our instance
|
|
Gulp.prototype.Gulp = Gulp;
|
|
|
|
var inst = new Gulp();
|
|
module.exports = inst;
|