StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
354 lines
11 KiB
354 lines
11 KiB
# composer [](https://www.npmjs.com/package/composer) [](https://npmjs.org/package/composer) [](https://travis-ci.org/doowb/composer)
|
|
|
|
API-first task runner with three methods: task, run and watch.
|
|
|
|
## Install
|
|
|
|
Install with [npm](https://www.npmjs.com/):
|
|
|
|
```sh
|
|
$ npm install composer --save
|
|
```
|
|
|
|
**Heads up** the `.watch` method was removed in version `0.11.0`. If you need _watch_ functionality, use [base-tasks](https://github.com/jonschlinkert/base-tasks) and [base-watch](https://github.com/node-base/base-watch).
|
|
|
|
## Usage
|
|
|
|
```js
|
|
var Composer = require('composer');
|
|
```
|
|
|
|
## API
|
|
|
|
### [.task](index.js#L62)
|
|
|
|
Register a new task with it's options and dependencies.
|
|
|
|
Dependencies may also be specified as a glob pattern. Be aware that
|
|
the order cannot be guarenteed when using a glob pattern.
|
|
|
|
**Params**
|
|
|
|
* `name` **{String}**: Name of the task to register
|
|
* `options` **{Object}**: Options to set dependencies or control flow.
|
|
* `options.deps` **{Object}**: array of dependencies
|
|
* `options.flow` **{Object}**: How this task will be executed with it's dependencies (`series`, `parallel`, `settleSeries`, `settleParallel`)
|
|
* `deps` **{String|Array|Function}**: Additional dependencies for this task.
|
|
* `fn` **{Function}**: Final function is the task to register.
|
|
* `returns` **{Object}**: Return the instance for chaining
|
|
|
|
**Example**
|
|
|
|
```js
|
|
// register task "site" with composer
|
|
app.task('site', ['styles'], function() {
|
|
return app.src('templates/pages/*.hbs')
|
|
.pipe(app.dest('_gh_pages'));
|
|
});
|
|
```
|
|
|
|
### [.build](index.js#L118)
|
|
|
|
Build a task or array of tasks.
|
|
|
|
**Params**
|
|
|
|
* `tasks` **{String|Array|Function}**: List of tasks by name, function, or array of names/functions. (Defaults to `[default]`).
|
|
* `options` **{Object}**: Optional options object to merge onto each task's options when building.
|
|
* `cb` **{Function}**: Callback function to be called when all tasks are finished building.
|
|
|
|
**Example**
|
|
|
|
```js
|
|
app.build('default', function(err, results) {
|
|
if (err) return console.error(err);
|
|
console.log(results);
|
|
});
|
|
```
|
|
|
|
### [.series](index.js#L185)
|
|
|
|
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**
|
|
|
|
```js
|
|
app.task('foo', function(done) {
|
|
console.log('this is foo');
|
|
done();
|
|
});
|
|
|
|
var fn = app.series('foo', function bar(done) {
|
|
console.log('this is bar');
|
|
done();
|
|
});
|
|
|
|
fn(function(err) {
|
|
if (err) return console.error(err);
|
|
console.log('done');
|
|
});
|
|
//=> this is foo
|
|
//=> this is bar
|
|
//=> done
|
|
```
|
|
|
|
### [.parallel](index.js#L217)
|
|
|
|
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**
|
|
|
|
```js
|
|
app.task('foo', function(done) {
|
|
setTimeout(function() {
|
|
console.log('this is foo');
|
|
done();
|
|
}, 500);
|
|
});
|
|
|
|
var fn = app.parallel('foo', function bar(done) {
|
|
console.log('this is bar');
|
|
done();
|
|
});
|
|
|
|
fn(function(err) {
|
|
if (err) return console.error(err);
|
|
console.log('done');
|
|
});
|
|
//=> this is bar
|
|
//=> this is foo
|
|
//=> done
|
|
```
|
|
|
|
## Events
|
|
|
|
[composer](https://github.com/doowb/composer) is an event emitter that may emit the following events:
|
|
|
|
### starting
|
|
|
|
This event is emitted when a `build` is starting.
|
|
|
|
The event emits 2 arguments, the current instance of [composer](https://github.com/doowb/composer) as the `app` and an object containing the build runtime information.
|
|
|
|
```js
|
|
app.on('starting', function(app, build) {});
|
|
```
|
|
|
|
* `build` exposes a `.date` object that has a `.start` property containing the start time as a `Date` object.
|
|
* `build` exposes a `.hr` object that has a `.start` property containing the start time as an `hrtime` array.
|
|
|
|
### finished
|
|
|
|
This event is emitted when a `build` has finished.
|
|
|
|
The event emits 2 arguments, the current instance of [composer](https://github.com/doowb/composer) as the `app` and an object containing the build runtime information.
|
|
|
|
```js
|
|
app.on('finished', function(app, build) {});
|
|
```
|
|
|
|
* `build` exposes a `.date` object that has `.start` and `.end` properties containing start and end times of the build as `Date` objects.
|
|
* `build` exposes a `.hr` object that has `.start`, `.end`, `.duration`, and `.diff` properties containing timing information calculated using `process.hrtime`
|
|
|
|
### error
|
|
|
|
This event is emitted when an error occurrs during a `build`.
|
|
The event emits 1 argument as an `Error` object containing additional information about the build and the task running when the error occurred.
|
|
|
|
```js
|
|
app.on('error', function(err) {});
|
|
```
|
|
|
|
Additional properties:
|
|
|
|
* `app`: current composer instance running the build
|
|
* `build`: current build runtime information
|
|
* `task`: current task instance running when the error occurred
|
|
* `run`: current task runtime information
|
|
|
|
### task:starting
|
|
|
|
This event is emitted when a task is starting.
|
|
The event emits 2 arguments, the current instance of the task object and an object containing the task runtime information.
|
|
|
|
```js
|
|
app.on('task:starting', function(task, run) {});
|
|
```
|
|
|
|
The `run` parameter exposes:
|
|
|
|
* `.date` **{Object}**: has a `.start` property containing the start time as a `Date` object.
|
|
* `.hr` **{Object}**: has a `.start` property containing the start time as an `hrtime` array.
|
|
|
|
### task:finished
|
|
|
|
This event is emitted when a task has finished.
|
|
|
|
The event emits 2 arguments, the current instance of the task object and an object containing the task runtime information.
|
|
|
|
```js
|
|
app.on('task:finished', function(task, run) {});
|
|
```
|
|
|
|
The `run` parameter exposes:
|
|
|
|
* `.date` **{Object}**: has a `.date` object that has `.start` and `.end` properties containing start and end times of the task as `Date` objects.
|
|
* `run` **{Object}**: has an `.hr` object that has `.start`, `.end`, `.duration`, and `.diff` properties containing timing information calculated using `process.hrtime`
|
|
|
|
### task:error
|
|
|
|
This event is emitted when an error occurrs while running a task.
|
|
The event emits 1 argument as an `Error` object containing additional information about the task running when the error occurred.
|
|
|
|
```js
|
|
app.on('task:error', function(err) {});
|
|
```
|
|
|
|
**Additional properties**
|
|
|
|
* `task`: current task instance running when the error occurred
|
|
* `run`: current task runtime information
|
|
|
|
## History
|
|
|
|
### v0.13.0
|
|
|
|
* Skip tasks by setting the `options.skip` option to the name of the task or an array of task names.
|
|
* Making additional `err` properties non-enumerable to cut down on error output.
|
|
|
|
### v0.12.0
|
|
|
|
* You can no longer get a task from the `.task()` method by passing only the name. Instead do `var task = app.tasks[name];`
|
|
* Passing only a name and no dependencies to `.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.
|
|
* Skip tasks by setting their `options.run` option to `false`.
|
|
|
|
### v0.11.3
|
|
|
|
* Allow passing es2015 javascript generator functions to `.task()`.
|
|
|
|
### v0.11.2
|
|
|
|
* Allow using glob patterns for task dependencies.
|
|
|
|
### v0.11.0
|
|
|
|
* **BREAKING CHANGE**: Removed `.watch()`. Watch functionality can be added to [base](https://github.com/node-base/base) applications using [base-watch](https://github.com/node-base/base-watch).
|
|
|
|
### v0.10.0
|
|
|
|
* Removes `session`.
|
|
|
|
### v0.9.0
|
|
|
|
* Use `default` when no tasks are passed to `.build()`.
|
|
|
|
### v0.8.4
|
|
|
|
* Ensure task dependencies are unique.
|
|
|
|
### v0.8.2
|
|
|
|
* Emitting `task` when adding a task through `.task()`
|
|
* Returning task when calling `.task(name)` with only a name.
|
|
|
|
### v0.8.0
|
|
|
|
* Emitting `task:*` events instead of generic `*` events. See [event docs](#events) for more information.
|
|
|
|
### v0.7.0
|
|
|
|
* No longer returning the current task when `.task()` is called without a name.
|
|
* Throwing an error when `.task()` is called without a name.
|
|
|
|
### v0.6.0
|
|
|
|
* Adding properties to `err` instances and emitting instead of emitting multiple parameters.
|
|
* Adding series and parallel flows/methods.
|
|
|
|
### v0.5.0
|
|
|
|
* **BREAKING CHANGE** Renamed `.run()` to `.build()`
|
|
|
|
### v0.4.2
|
|
|
|
* `.watch` returns an instance of `FSWatcher`
|
|
|
|
### v0.4.1
|
|
|
|
* Currently running task returned when calling `.task()` without a name.
|
|
|
|
### v0.4.0
|
|
|
|
* Add session-cache to enable per-task data contexts.
|
|
|
|
### v0.3.0
|
|
|
|
* Event bubbling/emitting changed.
|
|
|
|
### v0.1.0
|
|
|
|
* Initial release.
|
|
|
|
## Related projects
|
|
|
|
You might also be interested in these projects:
|
|
|
|
* [assemble](https://www.npmjs.com/package/assemble): Assemble is a powerful, extendable and easy to use static site generator for node.js. Used… [more](https://www.npmjs.com/package/assemble) | [homepage](https://github.com/assemble/assemble)
|
|
* [base-tasks](https://www.npmjs.com/package/base-tasks): base-methods plugin that provides a very thin wrapper around [https://github.com/jonschlinkert/composer](https://github.com/jonschlinkert/composer) for adding task methods to… [more](https://www.npmjs.com/package/base-tasks) | [homepage](https://github.com/jonschlinkert/base-tasks)
|
|
* [generate](https://www.npmjs.com/package/generate): Fast, composable, highly extendable project generator with a user-friendly and expressive API. | [homepage](https://github.com/generate/generate)
|
|
* [update](https://www.npmjs.com/package/update): Easily keep anything in your project up-to-date by installing the updaters you want to use… [more](https://www.npmjs.com/package/update) | [homepage](https://github.com/update/update)
|
|
* [verb](https://www.npmjs.com/package/verb): Documentation generator for GitHub projects. Verb is extremely powerful, easy to use, and is used… [more](https://www.npmjs.com/package/verb) | [homepage](https://github.com/verbose/verb)
|
|
|
|
## Contributing
|
|
|
|
Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/doowb/composer/issues/new).
|
|
|
|
## Building docs
|
|
|
|
Generate readme and API documentation with [verb](https://github.com/verbose/verb):
|
|
|
|
```sh
|
|
$ npm install verb && npm run docs
|
|
```
|
|
|
|
Or, if [verb](https://github.com/verbose/verb) is installed globally:
|
|
|
|
```sh
|
|
$ verb
|
|
```
|
|
|
|
## Running tests
|
|
|
|
Install dev dependencies:
|
|
|
|
```sh
|
|
$ npm install -d && npm test
|
|
```
|
|
|
|
## Author
|
|
|
|
**Jon Schlinkert**
|
|
|
|
* [github/jonschlinkert](https://github.com/jonschlinkert)
|
|
* [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
|
|
|
|
## License
|
|
|
|
Copyright © 2016, [Jon Schlinkert](https://github.com/jonschlinkert).
|
|
Released under the [MIT license](https://github.com/doowb/composer/blob/master/LICENSE).
|
|
|
|
***
|
|
|
|
_This file was generated by [verb](https://github.com/verbose/verb), v0.9.0, on May 25, 2016._ |