0.0.4 • Published 11 years ago
great v0.0.4
great
Another task runner with js
great vs gulp vs grunt
Great compared to major Task Runners (or Build Systems)
| great | gulp | grunt | |
|---|---|---|---|
| Orienting | Data | File | File |
| Flow | Clear | Clear | Mess |
| Easy | Yes | No | No |
great vs nodeunit vs mocha
Great compared to major Test Frameworks
| great | nodeunit | mocha | |
|---|---|---|---|
| Test Only | No | Yes | Yes |
| Event Driven | Yes | No | No |
| Nested | Good | Bad | Good |
| Browser | Good | Bad | Bad |
Quick Look
A task file to load:
module.exports = function() {
// upward emitting
this.emit('log', 'example: run');
// downward capturing
this.capture('title', function (title) {
this.emit('log', 'titled: ' + title);
this.set('title', title);
});
this.capture('end', function () {
this.emit('log', 'ended: ' + this.get('title'));
});
// task loading
this.add(function () {
this.emit('title', 'series');
this.add(createBody('a-1'));
this.add(createBody('a-2'));
this.add(createBody('a-3'));
});
this.add(function () {
this.emit('title', 'parallel');
this.add([
createAsyncBody('b-1'),
createAsyncBody('b-2'),
createAsyncBody('b-3'),
createAsyncBody('b-4'),
createAsyncBody('b-5'),
createAsyncBody('b-6')
]);
});
};Greatfile.js for entry:
var great = require('great');
var args = process.argv.slice(2);
great(function () {
// task picking
if (args[0] === 'example') {
this.add(require('./example/' + args[1]));
}
});Run tasks from command line:
node Greatfile [arg1] [arg2] ..`Or after alias great='node Greatfile':
great [arg1] [arg2] ..Also this way on browser:
<!-- include great.js -->
<script src="great.js"></script>
<!-- define tasks -->
<script src="task1.js"></script>
<script src="task2.js"></script>
<!-- configure tasks -->
<script>
great(function() {
this.add(task1);
this.add(task2);
});
</script>See for more:
Greatfile.js: Greatfile.js- Task files: example/