Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@zemerik/task-runner) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Task Runner
A fast and flexible CLI task runner for managing development workflows. Built in Rust for maximum performance and reliability.
Features
- ⚡ Fast Execution - Built in Rust for optimal performance
- 🔄 Parallel & Sequential - Run tasks in parallel or sequentially
- 📋 Dependency Management - Automatic dependency resolution
- 🎨 Rich Output - Beautiful, colored terminal output with progress indicators
- 📁 Multiple Formats - Support for JSON, YAML, and TOML configuration
- 🔧 Environment Variables - Per-task and global environment configuration
- ⏱️ Timeout Support - Set timeouts for long-running tasks
- 🛡️ Error Handling - Robust error handling with continue-on-error options
Installation
From NPM (Recommended)
npm install -g task-runner
From Source
# Clone the repository
git clone https://github.com/Zemerik/task-runner.git
cd task-runner
# Build and install
cargo build --release
cargo install --path .
Quick Start
- Create a configuration file (
task-runner.json
):
{
"env": {
"NODE_ENV": "development"
},
"tasks": {
"dev": {
"description": "Start development environment",
"commands": [
"npm run build:watch",
"npm run server:dev",
"npm run test:watch"
],
"parallel": true
},
"build": {
"description": "Build for production",
"dependencies": ["clean"],
"commands": [
"npm run compile",
"npm run bundle",
"npm run optimize"
]
},
"deploy": {
"description": "Deploy to production",
"dependencies": ["build", "test"],
"commands": [
"npm run deploy:staging",
"npm run health-check",
"npm run deploy:prod"
],
"env": {
"NODE_ENV": "production"
}
}
}
}
- Run tasks:
# List available tasks
task-runner list
# Run a single task
task-runner run build
# Run multiple tasks in parallel
task-runner run dev --parallel
# Run with dependencies
task-runner run deploy
Configuration
Task Runner supports multiple configuration file formats:
task-runner.json
(JSON)task-runner.yaml
ortask-runner.yml
(YAML)task-runner.toml
(TOML)
Configuration Structure
{
"env": {
"GLOBAL_VAR": "value"
},
"default_timeout": 300,
"default_working_dir": "./src",
"tasks": {
"task-name": {
"description": "Task description",
"commands": ["command1", "command2"],
"dependencies": ["other-task"],
"env": {
"TASK_VAR": "value"
},
"parallel": false,
"sequential": true,
"working_dir": "./custom/path",
"timeout": 60,
"continue_on_error": false,
"hidden": false
}
}
}
Task Properties
Property | Type | Description |
---|---|---|
description |
string | Human-readable task description |
commands |
string[] | Commands to execute |
dependencies |
string[] | Tasks that must run before this task |
env |
object | Environment variables for this task |
parallel |
boolean | Run commands in parallel |
sequential |
boolean | Run commands sequentially |
working_dir |
string | Working directory for task execution |
timeout |
number | Timeout in seconds |
continue_on_error |
boolean | Continue if commands fail |
hidden |
boolean | Hide from task list |
Usage
Commands
List Tasks
# List all tasks
task-runner list
# List with details
task-runner list --details
Run Tasks
# Run a single task
task-runner run build
# Run multiple tasks
task-runner run build test deploy
# Run in parallel
task-runner run build test --parallel
# Run sequentially
task-runner run build test --sequential
# Continue on error
task-runner run build test --continue-on-error
Task Information
# Show task details
task-runner info build
Validate Configuration
# Validate config file
task-runner validate
Options
Option | Description |
---|---|
--config, -c |
Specify configuration file path |
--verbose, -v |
Enable verbose output |
--env, -e |
Set environment for task execution |
Examples
Frontend Development Workflow
{
"tasks": {
"dev": {
"description": "Start development server",
"commands": [
"npm run dev",
"npm run storybook"
],
"parallel": true
},
"build": {
"description": "Build for production",
"dependencies": ["clean"],
"commands": [
"npm run build",
"npm run test:ci"
]
},
"deploy": {
"description": "Deploy to staging",
"dependencies": ["build"],
"commands": [
"npm run deploy:staging"
]
}
}
}
Full-Stack Development
env:
NODE_ENV: development
DATABASE_URL: postgresql://localhost/dev
tasks:
backend:
description: Start backend server
commands:
- "cargo run"
- "cargo test --watch"
parallel: true
working_dir: "./backend"
frontend:
description: Start frontend development
commands:
- "npm run dev"
- "npm run test:watch"
parallel: true
working_dir: "./frontend"
dev:
description: Start full development environment
dependencies: ["backend", "frontend"]
commands: []
test:
description: Run all tests
commands:
- "cargo test"
- "npm run test"
working_dir: "."
Error Handling
Task Runner provides comprehensive error handling:
- Task not found: Clear error message with available tasks
- Circular dependencies: Detection and reporting of dependency cycles
- Command failures: Detailed error output with exit codes
- Configuration errors: Validation with helpful error messages
Performance
Built in Rust, Task Runner is designed for speed:
- Fast startup: Minimal overhead for task execution
- Efficient parallelization: Optimal use of system resources
- Memory efficient: Low memory footprint even with many tasks
- Cross-platform: Native binaries for Windows, macOS, and Linux
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
License
MIT License - see LICENSE file for details.
Support
- 📖 Documentation
- 🐛 Issues
- 💬 Discussions