There four builder types supported by gulp-build-manager.
//--- Named Builders
export type GBuilderClassName = string;
//--- Function Builders
export type FunctionBuilder = (rtb: RTB, ...args: any[]) => void | Promise<unknown>;
//--- Object Builders
export interface ExternalBuilder extends ExternalCommand {}
//--- GBuilder
class GBuilder extends RTB {}
//--- Combined Builders Type
export type Builders = GBuilderClassName | FunctionBuilder | ExternalBuilder | GBuilder;
Example:
const sass = {
buildName: 'sass',
builder: 'GCSSBuilder',
src: [upath.join(srcRoot, 'postcss/**/*.pcss')],
dest: upath.join(destRoot, 'css'),
}
Example:
const customFunction = {
buildName: 'customFunction',
builder: (rtb) => {
console.log('Custom builder using function(): Hello!!!', rtb.conf.buildName);
}
};
Example:
const cmd1 = {
buildName: 'node-version',
builder: { command: 'node', args: ['-v'],
}
It is recommended all the custom builder classes to extend GBuilder, not RTB. GBuilder class is avail from GBuilder.builders property.
build() => void | Promise<unknown>;
Main build function. All the RTB API’s are availabe using this object because GBuilder extends RTB. Default action is copying conf.src to conf.dest.
const gbm = require('gulp-build-manafer');
class CopyBuilder extends gbm.builders.GBuilder {
protected build() {
this.src().debug()dest();
}
}