{"id":24227945,"url":"https://github.com/replete/abstractionless-task-runner","last_synced_at":"2025-10-25T14:45:00.056Z","repository":{"id":142641458,"uuid":"70653652","full_name":"replete/abstractionless-task-runner","owner":"replete","description":"An alternative to npm-scripts and gulp. Use real APIs instead of CLIs or intermediate plugins.","archived":false,"fork":false,"pushed_at":"2016-10-12T11:29:50.000Z","size":5,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-14T11:05:11.034Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/replete.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-10-12T02:15:16.000Z","updated_at":"2016-10-12T11:27:40.000Z","dependencies_parsed_at":"2023-04-07T09:00:57.552Z","dependency_job_id":null,"html_url":"https://github.com/replete/abstractionless-task-runner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replete%2Fabstractionless-task-runner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replete%2Fabstractionless-task-runner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replete%2Fabstractionless-task-runner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/replete%2Fabstractionless-task-runner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/replete","download_url":"https://codeload.github.com/replete/abstractionless-task-runner/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241801253,"owners_count":20022388,"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":[],"created_at":"2025-01-14T10:48:57.613Z","updated_at":"2025-10-25T14:44:55.031Z","avatar_url":"https://github.com/replete.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# abstractionless task runner\n\nWhy? It's just another option beside these usual approaches to frontend tooling:\n\n## CLIs (e.g npm scripts)\nImplements tasks with CLIs inside npm script definitions inside `package.json`.\nBeyond simple projects, these implementations can end up highly verbose and/or hide  options in separate .json files. \nSometimes package CLIs are third-party and/or out-of-sync, and it gets really messy when you want to involve async tasks.\n\n## Task-runners (e.g. gulp)\nImplement tasks with a task runner such as gulp. Often you are interacting with an abstraction of the thing you want to use (a plugin), which can easily be out-of-sync, buggy, or at times completely broken. When it works though, it's great.\n\n## Bundlers (e.g webpack)\nBundlers like webpack are magical and can be the perfect solution. But they can also become extremely complicated to get working, and can suffer from the same problems as task-runners because they also rely on plugins.\n\n# Package APIs + browser-sync\nWrite your own script and deal with package APIs directly.\n\n* I've found `bs.watch()` to be faster than multiple concurrent package CLI watchers and easier to orchestrate.\n* `glob, fs-extra, browser-sync` are required globally, but do what you will.\n* `fs-extra` exposes a useful `outputFile` method, which creates parent directories if they dont currently exist\n\n\n## TODO:\n\n- [x] Separate and expose build/reload tasks to npm scripts\n- [ ] Add more package examples\n- [ ] Find useful abstractions (eg, transforming path strings)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freplete%2Fabstractionless-task-runner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Freplete%2Fabstractionless-task-runner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Freplete%2Fabstractionless-task-runner/lists"}