const Base = require('base');
const tasks = require('base-task');
const base = new Base();
base.use(tasks());
/**
* Define tasks
*/
base.task('foo', function(cb) {
console.log('this is foo!');
cb();
});
base.task('bar', function(cb) {
console.log('this is bar!');
cb();
});
/**
* Build tasks
*/
base.build(['foo', 'bar'])
.then(() => {
// this is foo!
// this is bar!
console.log('done!');
})
.catch(console.error)
See the [composer][] documentation for more details, or to create bug reports related to running or registering tasks.
Register a task
Params
name
{String}: Task name to register (tasks are cached onapp.tasks
)dependencies
{String|Array|Function}: String, list or array of tasks.callback
{Function}: Function to be called when the task is executed. Task functions should either return a stream or call the callback to let [composer][] know when the task is finished.
Examples
Register a task.
app.task('default', function() {
// return the stream to signal "done"
return app.src('pages/*.hbs')
.pipe(app.dest('dist'));
});
Register a task with dependencies (other tasks to run before executing the task):
app.task('site', ['styles'], function() {
return app.src('pages/*.hbs')
.pipe(app.dest('dist'));
});
app.task('default', ['site']);
Get a task
const task = app.task('site');
Run a task or array of tasks.
Promise examples
// run the "default" task, if defined
app.build();
app.build('default');
// run an array of tasks
app.build(['foo', 'bar'])
.then(() => console.log('done!'))
.catch(console.error);
Callback examples
// run the "default" task, if defined
app.build(function(err, results) {
if (err) return console.error(err);
console.log(results);
});
app.build('default', function(err, results) {
if (err) return console.error(err);
console.log(results);
});
app.build(['foo', 'bar'], function(err, results) {
if (err) return console.error(err);
console.log(results);
});
Compose task or list of tasks into a single function that runs the tasks in series.
Params
tasks
{String|Array|Function}: List of tasks by name, function, or array of names/functions.returns
{Function}: Composed function that may take a callback function.
Example
app.task('foo', function(cb) {
console.log('this is foo');
cb();
});
const build = app.series('foo', function(cb) {
console.log('this is bar');
cb();
});
build(function(err) {
if (err) return console.error(err);
console.log('finished');
});
//=> this is foo
//=> this is bar
//=> finished
Compose task or list of tasks into a single function that runs the tasks in parallel.
Params
tasks
{String|Array|Function}: List of tasks by name, function, or array of names/functions.returns
{Function}: Composed function that may take a callback function.
Example
app.task('foo', function(cb) {
setTimeout(function() {
console.log('this is foo');
cb();
}, 500);
});
const build = app.parallel('foo', function(cb) {
console.log('this is bar');
cb();
});
build(function(err) {
if (err) return console.error(err);
console.log('finished');
});
//=> this is bar
//=> this is foo
//=> finished
The following events are emitted by [composer][]. See the composer docs for more details
Emitted when a task
is register
, starting
and finished
.
app.on('task', function(task) {
console.log(task.status);
//=> 'register'
});
Emitted when a build
is starting
and finished
.
app.on('build', function(build) {
console.log(build.status);
//=> 'starting'
});
- Bumped [composer][] to v2.0.0.
- Bumped [composer][] to v0.11.0, so the
.watch
method is no longer included by default. To add.watch
, use the [base-watch][] plugin.