Crates.io | tazk |
lib.rs | tazk |
version | 0.2.2 |
created_at | 2025-08-20 08:28:22.642586+00 |
updated_at | 2025-08-20 08:28:22.642586+00 |
description | π Lightweight, agnostic, fast and easy task runner |
homepage | |
repository | https://github.com/nehu3n/tazk |
max_upload_size | |
id | 1803004 |
size | 47,949 |
Lightweight, agnostic, fast and easy task runner
Tazk is a modern task runner built in Rust that brings speed, simplicity, and flexibility to your development workflow. Define tasks in TOML, YAML, or JSON, and watch them execute with beautiful, colorized output.
cargo install tazk
npm install -g tazk-bin
Download the latest release from GitHub Releases
Create a tasks.toml
file in your project root:
[config]
default = "hello"
[tasks.hello]
cmd = "echo hello world!"
desc = "print a greeting"
[tasks.goodbye]
cmd = "echo goodbye!"
Run your tasks:
# Run the default task
tazk
# Run a specific task
tazk goodbye
# List all available tasks
tazk --list
# Use a custom config file
tazk --file my-tasks.yaml build
Tazk supports three configuration formats:
[config]
default = "build"
concurrent = true
[tasks.build]
cmd = "echo Building..."
desc = "Build the project"
deps = ["clean"]
watch = ["src/*.rs"]
watch_debounce = 500
watch_propagate = true
concurrent = false
env = { NODE_ENV = "production" }
config:
default: build
concurrent: true
tasks:
build:
cmd: echo Building...
desc: Build the project
deps: [clean]
watch: [src/*.rs]
watch_debounce: 500
watch_propagate: true
concurrent: false
env:
NODE_ENV: production
{
"config": {
"default": "build",
"concurrent": true
},
"tasks": {
"build": {
"cmd": "echo Building...",
"desc": "Build the project",
"deps": ["clean"],
"watch": ["src/*.rs"],
"watch_debounce": 500,
"watch_propagate": true,
"concurrent": false,
"env": {
"NODE_ENV": "production"
}
}
}
}
Option | Type | Description |
---|---|---|
cmd |
string | string[] |
Command(s) to execute |
desc |
string |
Task description |
deps |
string[] |
Task dependencies |
watch |
string[] |
File patterns to watch for changes |
watch_debounce |
number |
Debounce time in milliseconds (default: 500) |
watch_propagate |
boolean |
Trigger dependent tasks on file changes |
concurrent |
boolean |
Override global concurrent setting |
env |
object |
Environment variables |
π Tazk - Lightweight, agnostic, fast and easy task runner
Usage: tazk [OPTIONS] [TASK]
Arguments:
[TASK] Task to run (uses default if not specified)
Options:
-f, --file <FILE> Use a specific tasks file
-l, --list List all available tasks
-h, --help Print help
-V, --version Print version
[config]
default = "dev"
[tasks.install]
cmd = "npm install"
[tasks.build]
cmd = ["npm run build"]
deps = ["install"]
watch = ["src/**/*", "package.json"]
[tasks.test]
cmd = "npm test"
deps = ["install"]
[tasks.dev]
cmd = "npm run dev"
deps = ["install"]
watch = ["src/**/*"]
watch_propagate = false
[config]
default = "check"
[tasks.fmt]
cmd = "cargo fmt"
[tasks.clippy]
cmd = "cargo clippy -- -D warnings"
deps = ["fmt"]
[tasks.test]
cmd = "cargo test"
deps = ["clippy"]
[tasks.build]
cmd = "cargo build --release"
deps = ["test"]
[tasks.check]
cmd = "echo All checks passed!"
deps = ["build"]
[tasks.build-image]
cmd = "docker build -t myapp ."
watch = ["Dockerfile", "src/**/*"]
[tasks.run-container]
cmd = "docker run -p 8080:8080 myapp"
deps = ["build-image"]
[tasks.push]
cmd = "docker push myapp:latest"
deps = ["build-image"]
Tazk includes a powerful file watching system:
[tasks.frontend]
cmd = "npm run build"
watch = [
"src/**/*.js",
"src/**/*.css",
"public/**/*"
]
watch_debounce = 300
watch_propagate = true
*
and **
for flexible file matchingWe welcome contributions! Please see contributing.md for details.
git checkout -b feature/amazing-feature
)git commit -m 'Add some amazing feature'
)git push origin feature/amazing-feature
)This project is licensed under the MIT License - see the LICENSE file for details.