{"id":14982169,"url":"https://github.com/jstty/beelzebub","last_synced_at":"2025-06-22T11:05:17.936Z","repository":{"id":75200432,"uuid":"61779286","full_name":"jstty/beelzebub","owner":"jstty","description":"One hell of a Task Master!","archived":false,"fork":false,"pushed_at":"2023-04-27T00:42:35.000Z","size":417,"stargazers_count":8,"open_issues_count":20,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-02T01:04:50.410Z","etag":null,"topics":["beelzebub","build-tool","gulpjs","javascript","node","node-js","nodejs","streams","task-master","task-runner","tasks"],"latest_commit_sha":null,"homepage":"http://beelzebub.io","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jstty.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-23T06:13:53.000Z","updated_at":"2023-04-27T00:40:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"884403b0-d04a-44a0-81b8-d91b7f5638ab","html_url":"https://github.com/jstty/beelzebub","commit_stats":{"total_commits":84,"total_committers":6,"mean_commits":14.0,"dds":"0.11904761904761907","last_synced_commit":"3688ba2dd03bdb0f8659149109578ce405fed0c5"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jstty%2Fbeelzebub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jstty%2Fbeelzebub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jstty%2Fbeelzebub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jstty%2Fbeelzebub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jstty","download_url":"https://codeload.github.com/jstty/beelzebub/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238817369,"owners_count":19535517,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beelzebub","build-tool","gulpjs","javascript","node","node-js","nodejs","streams","task-master","task-runner","tasks"],"created_at":"2024-09-24T14:04:54.364Z","updated_at":"2025-02-14T09:31:11.281Z","avatar_url":"https://github.com/jstty.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- # Beelzebub - One hell of a task master! --\u003e\n\u003ccenter id=\"top\"\u003e\u003cimg src=\"./assets/bz-logo-full.png\" /\u003e\u003c/center\u003e\n\n\n[![Build Status](https://secure.travis-ci.org/jstty/beelzebub.png?branch=master)](http://travis-ci.org/jstty/beelzebub)\n[![Coverage Status](https://coveralls.io/repos/github/jstty/beelzebub/badge.svg?branch=master)](https://coveralls.io/github/jstty/beelzebub?branch=master)\n![License](https://img.shields.io/npm/l/beelzebub.svg)\n[![Dependency Status](https://david-dm.org/jstty/beelzebub.png?theme=shields.io\u0026branch=master)](https://david-dm.org/jstty/beelzebub)\n[![devDependency Status](https://david-dm.org/jstty/beelzebub/dev-status.png?theme=shields.io\u0026branch=master)](https://david-dm.org/jstty/beelzebub#info=devDependencies)\n\n\u003ccenter\u003e\n\u003cdiv\u003e\u003ca target=\"_blank\" href=\"https://nodei.co/npm/beelzebub/\"\u003e\u003cimg src=\"https://nodei.co/npm/beelzebub.png\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\u003cdiv\u003e\n\u003ca target=\"_blank\" href=\"http://twitter.com/beelzebubio\"\u003e\u003cimg width=\"32px\" src=\"assets/twitter-logo.svg\" /\u003e\u003c/a\u003e\n\u003c/div\u003e\n\u003c/center\u003e\n\n## Description\nA modern task runner pipeline framework.\nAllows your Tasks to be Modular, Extendable, Flexible, Manageable, and Fire Resistant!\n\n## Features\n1. Tasks are based on Promises, support: \n    * Generator  ([Example](./examples/api/async.js))\n        * Using [co wrapping](https://github.com/tj/co)\n    * Async/Await ([Example](./examples/api/async.js))\n    * Streams ([Example](./examples/api/stream.js))\n        * Compatible with your existing `gulp` tasks\n2. ES6 Class base class\n    * Extending from other Tasks ([Example](./examples/api/extend.js))\n3. Sub Tasks\n    * Static - simply by adding another task class to a tasks sub class. ([Example](./examples/api/subtasksSimple.js))\n    * Dynamic - create sub tasks based on configuration ([Example](./examples/api/subtasksAdvanced.js))\n4. Run other tasks in an task\n    * Parallel ([Example](./examples/api/parallel.js))\n    * Sequence ([Example](./examples/api/sequence.js))\n5. Before and After ([Simple Example](./examples/api/beforeAfter.js), [Adv Example](./examples/api/beforeAfterAdvanced.js))\n    * each task\n    * all tasks\n6. Decorators\n    * Setting Default Task ([Example](./examples/api/decoratorHelp.js))\n    * Help Docs ([Example](./examples/api/decoratorHelp.js))\n    * Vars Definitions (for help and set defaults) ([Example](./examples/api/decoratorVars.js))\n7. Auto Help Docs ([ALI Example](./examples/api/helpDocs.js), [CLI Example](./examples/cli/helpDocs.js))\n8. Passing Options (Vars) to a task or globally ([ALI Example](./examples/api/passingVars.js), [CLI Example](./examples/cli/defineVars.js))\n9. CLI ([Examples](./examples/cli)) and full Javascript API ([Examples](./examples/api))\n10. **Totally bad *ss logo!**\n\n-------\n# Install\n\n## API\n```shell\n$ npm install beelzebub\n```\n\n## CLI\n```shell\n$ npm install beelzebub -g\n```\n\n-------\n# DOCS\n### [Task Class](./docs/taskClass.md)\n\n-------\n# API\n### [Examples](./examples/api)\n\n# Simple Example\n```javascript\nconst Beelzebub = require('beelzebub');\n\nclass MyTasks extends Beelzebub.Tasks {\n    task1() {\n        this.logger.log('MyTasks task1');\n    }\n}\n\n// Add Task to BZ, it will now be registered\nBeelzebub.add( MyTasks );\n\n// ------------------------------------\n// Runs the task, returning a promise\nBeelzebub.run('MyTasks.task1');\n```\n\n-------\n# CLI\n### [Examples](./examples/cli)\n\n## Reserved Global Flags\n* `--help` or `-h`\n    * Prints Usage, List of Task Help Docs and Vars Definitions\n* `--version` or `-v`\n    * Prints Beelzebub version\n* `--file=\u003cfile path\u003e` or `-f=\u003cfile path\u003e`\n    * Uses this file instead of the `beelzebub.js` or `beelzebub.json` file\n\n\u003c!--\n# File Loader\nTODO \n--\u003e\n\n## Passing Vars\nThe CLI uses [yargs](https://github.com/yargs/yargs) and thus the vars parsing is handled by [yargs-parser](https://github.com/yargs/yargs-parser).\n\n```shell\n$ bz \u003cglobal vars\u003e TaskPath \u003cvars to pass to this Task\u003e AnotherTaskPath \u003cvars will only pass to the preceding Task\u003e \n```\n\n--------\n## Simple Example\n### `beelzebub.js` file\n```javascript\nconst Beelzebub = require('beelzebub');\n\nclass MyTasks extends Beelzebub.Tasks {\n    task() {\n        this.logger.log('MyTasks task');\n    }\n}\n\nmodule.exports = MyTasks;\n```\n\n```shell\n$ bz MyTasks.task\n```\n\n\n--------\n## Vars Example\n\n### `beelzebub.js` file\n```javascript\nconst Beelzebub = require('beelzebub');\n\nclass MyTasks1 extends Beelzebub.Tasks {\n    default(aVars) {\n        const gVars = this.$getGlobalVars();\n        this.logger.log(`MyTasks1 default ${gVars.myGlobalVar} ${aVars.v1}`);\n    }\n}\n\nclass MyTasks2 extends Beelzebub.Tasks {\n    task(aVars) {\n        const gVars = this.$getGlobalVars();\n        this.logger.log(`MyTasks1 task ${gVars.myGlobalVar} ${aVars.v1}`);\n    }\n}\n\nmodule.exports = [MyTasks1, MyTasks2];\n```\n\n```shell\n$ bz --myGlobalVar=hello MyTasks1 --v1=1 MyTasks2.task --v1=2\n```\n\n--------\n## Load File Example\n\n### `appTasks.js` file\n```javascript\nmodule.exports = [\n  require('bz-frontend-react'),\n  require('bz-frontend-babel'),\n  require('./mytask.js')\n];\n```\n\n```shell\n$ bz --file=./appTasks.js MyTasks.task1\n```\n\n--------\n## Special Thanks\nTo everyone supporting the development and cost to the project.\nI would also like to thank the logo artist [Irving Gerardo](https://thenounproject.com/irvinggerardo)!!!\n\n--------\n## License\nIt should be an obvious choice or you totally missed the [badge at the top](#top).\n\nHowever for completeness;\n\n*\"I Beelzebub, declare myself to be under the [MIT licence](LICENSE)\"*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjstty%2Fbeelzebub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjstty%2Fbeelzebub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjstty%2Fbeelzebub/lists"}