oblige
Tiny task-based module for whipping up "hookable" build scripts, with the intention of being used in decorated interfaces.
Installation
npm install oblige
API
tasks = require('oblige')
The "root" oblige instance. Captures the events across all oblige instances.
tasks.create(name, [meta], taskfn)
Creates a new task. meta
is optional, and handles two properties (also
optional):
meta.description
: defaults to an empty string.meta.before
: A string or array of string task names -task.run
will call these tasks in sequence before running the task.
taskfn
is called when running the task, and is passed a done
callback
to the first argument you should call when it's complete. If done
is passed
an error, any parent tasks will stop running.
tasks.run(name, callback)
Runs a task, calling callback(err)
when complete.
tasks.on('data', callback)
Every time a new task is created, oblige
emits it as a data event with the
task that's been loaded.
child = tasks()
Similarly to timber, you can create child task handlers - these are almost totally independent, except the "root" instance will capture events from these as well.
child = tasks('namespaced')
By supplying a string key to the function, you're returned a new instance unique to that name - use it twice in different places and you'll receive the same instance.
Example
Take a simple task runner:
// runner.jsvar oblige =var command = processargv2taskName = processargv3if command === 'list'obligeif command === 'run'oblige
And a tasks file:
// tasks.jsvar oblige =obligeobligeoblige
You would be able to run the command and get this:
$ node runner.js listminify: Minifies frontend assetsminify-css: Minifies CSSminify-js: Minifies JavaScript$ node runner.js run minifyminifying css...minifying js...ok!$ node runner.js run minify-jsminifying js...ok!