Breaking changes
.task, .build, .series and .parallel work the same way. However, event handling has changed. Please see the readme for more information and documentation..build to return a promise when the callback is not passed in. see issue #281.0.0.'in task "foo":' prefixed to the error message. see issue #22.runInfo on the task object for use in event listeners and task functions.Add .duration to the .run/.runInfo object that shows the duration in a human friendly format. This will also show the current duration from the time the task started to the time it's called if used inside a task function. see issue #23
app.task('foo', function(cb) {
console.log(this.runInfo.duration);
});
options.skip option to the name of the task or an array of task names.err properties non-enumerable to cut down on error output..task() method by passing only the name. Instead do var task = app.tasks[name];.task() will result in a noop task being created.options may be passed to .build(), .series() and .parallel()options passed to .build() will be merged onto task options before running the task.options.run option to false..task()..watch(). Watch functionality can be added to [base][] applications using [base-watch][].session.default when no tasks are passed to .build().task when adding a task through .task().task(name) with only a name.task:* events instead of generic * events. See event docs for more information..task() is called without a name..task() is called without a name.err instances and emitting instead of emitting multiple parameters..run() to .build().watch returns an instance of FSWatcher.task() without a name.