One Hell of a Task Master!
Last updated a year ago by jstty .
MIT · Repository · Bugs · Original npm · Tarball
$ cnpm install beelzebub 
SYNC missed versions from official npm registry.

Build Status bitHound Score Coverage Status License Dependency Status devDependency Status


A modern task runner pipeline framework. Allows your Tasks to be Modular, Extendable, Flexible, Manageable, and Fire Resistant!


  1. Tasks are based on Promises, support:
  2. ES6 Class base class
    • Extending from other Tasks (Example)
  3. Sub Tasks
    • Static - simply by adding another task class to a tasks sub class. (Example)
    • Dynamic - create sub tasks based on configuration (Example)
  4. Run other tasks in an task
  5. Before and After (Simple Example, Adv Example)
    • each task
    • all tasks
  6. Decorators
    • Setting Default Task (Example)
    • Help Docs (Example)
    • Vars Definitions (for help and set defaults) (Example)
  7. Auto Help Docs (ALI Example, CLI Example)
  8. Passing Options (Vars) to a task or globally (ALI Example, CLI Example)
  9. CLI (Examples) and full Javascript API (Examples)
  10. *Totally bad ss logo!



$ npm install beelzebub


$ npm install beelzebub -g


Task Class



Simple Example

const Beelzebub = require('beelzebub');

class MyTasks extends Beelzebub.Tasks {
    task1() {
        this.logger.log('MyTasks task1');

// Add Task to BZ, it will now be registered
Beelzebub.add( MyTasks );

// ------------------------------------
// Runs the task, returning a promise'MyTasks.task1');



Reserved Global Flags

  • --help or -h
    • Prints Usage, List of Task Help Docs and Vars Definitions
  • --version or -v
    • Prints Beelzebub version
  • --file=<file path> or -f=<file path>
    • Uses this file instead of the beelzebub.js or beelzebub.json file

Passing Vars

The CLI uses yargs and thus the vars parsing is handled by yargs-parser.

$ bz <global vars> TaskPath <vars to pass to this Task> AnotherTaskPath <vars will only pass to the preceding Task> 

Simple Example

beelzebub.js file

const Beelzebub = require('beelzebub');

class MyTasks extends Beelzebub.Tasks {
    task() {
        this.logger.log('MyTasks task');

module.exports = MyTasks;
$ bz MyTasks.task

Vars Example

beelzebub.js file

const Beelzebub = require('beelzebub');

class MyTasks1 extends Beelzebub.Tasks {
    default(aVars) {
        const gVars = this.$getGlobalVars();
        this.logger.log(`MyTasks1 default ${gVars.myGlobalVar} ${aVars.v1}`);

class MyTasks2 extends Beelzebub.Tasks {
    task(aVars) {
        const gVars = this.$getGlobalVars();
        this.logger.log(`MyTasks1 task ${gVars.myGlobalVar} ${aVars.v1}`);

module.exports = [MyTasks1, MyTasks2];
$ bz --myGlobalVar=hello MyTasks1 --v1=1 MyTasks2.task --v1=2

Load File Example

appTasks.js file

module.exports = [
$ bz --file=./appTasks.js MyTasks.task1

Special Thanks

To everyone supporting the development and cost to the project. I would also like to thank the logo artist Irving Gerardo!!!


It should be an obvious choice or you totally missed the badge at the top.

However for completeness;

"I Beelzebub, declare myself to be under the MIT licence"

Maintainers (1)
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 108
Dependencies (11)
Dependents (0)

Copyright 2014 - 2016 © |