Bab is a modern task runner built for seamless development workflows. It replaces the clunky syntax of Makefiles and the limitations of npm scripts with a universal, dependency-free solution that works across any language or project. Whether you're running small scripts or orchestrating hundreds of tasks, Bab scales effortlessly, keeping your workflow smooth, organized, and maintainable.
# macOS / Linux
curl -sSfL https://bab.sh/install.sh | sh
# Windows (PowerShell)
iwr -useb https://bab.sh/install.ps1 | iexFor more installation options, see the Installation Documentation.
Create a Babfile in your project root:
setup:
desc: Install dependencies
run: npm install
dev:
desc: Start development server
run: npm run dev
test:
desc: Run test suite
run: npm test
build:
desc: Build for production
run: npm run buildFor complete Babfile syntax and advanced features, see the Babfile Documentation.
bab list # List all available tasks
bab setup # Run the setup task
bab dev # Start development server
bab build --dry-run # Preview build task without executingFor more CLI commands and options, see the CLI Guide.
Bab is under active development. Some completed features may be refined or reimplemented as the project matures.
- Basic Task Execution - Execute tasks defined in Babfile with shell commands
- Nested Task Support - Organize tasks hierarchically with colon notation (e.g.,
dev:start) - Cross-Platform Execution - Native shell execution on Linux, macOS, and Windows
- Flexible Babfile Formats - Support for Babfile, Babfile.yaml, and Babfile.yml
- Dry-Run Mode - Preview commands without executing them (
--dry-run) - Verbose Logging - Detailed execution logs for debugging (
--verbose) - Task Listing - Display all available tasks in a colorized tree structure (
bab list) - Graceful Shutdown - Proper handling of interrupts and termination signals
- Multi-Command Tasks - Support for tasks with single or multiple commands
- Task Dependencies - Automatic execution of prerequisite tasks before running a task
- Interactive Mode - Fuzzy search interface for browsing and selecting tasks
- Task History Tracking - Per-project execution history with status and duration
- Custom File Paths - Specify alternative Babfile locations with
--fileflag - Babfile Schema Validation - Structured schema for validating Babfile syntax and configuration
- Advanced Multi-Babfile Support - Import and compose multiple Babfiles for complex project structures
- Platform-Specific Tasks - Define tasks that run only on specific operating systems (Windows, Linux, macOS)
- Compiled Binary Execution - Support for executing compiled binaries beyond shell scripts
- Environment Variable Management - Built-in handling, interpolation, and validation of environment variables
- Module System - Share and reuse Babfiles across projects as importable modules
- Performance Profiling - Built-in performance monitoring and profiling for task execution
- Interactive Babfile Generator - Create and modify Babfiles through interactive command-line forms
- Enhanced Output Formatting - Rich, context-aware colored output with better visual hierarchy
See our GitHub Issues for the complete list of planned features and to suggest new ideas.
- 💬 Discord - Join our Discord community for questions and discussions
- 📚 Documentation - Visit docs.bab.sh for comprehensive guides
- 🐛 Bug Reports - GitHub Issues for bug reports and feature requests
- 🤝 Contributing - See the Contributing Guide to get started
- 🌐 Website - Visit bab.sh for more information
Bab is released under the MIT License. This means you're free to use, modify, and distribute this software for personal or commercial purposes.
Built with ❤️ by AIO