https://github.com/nadlejs/nadle
A type-safe, modern, Gradle-inspired task runner.
https://github.com/nadlejs/nadle
build-tool cli developer-tools gradle-inspired grunt lightweight make nodejs task-orchestration task-runner type-safe typescript
Last synced: 3 months ago
JSON representation
A type-safe, modern, Gradle-inspired task runner.
- Host: GitHub
- URL: https://github.com/nadlejs/nadle
- Owner: nadlejs
- License: mit
- Created: 2025-04-27T07:11:09.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2026-02-14T16:17:36.000Z (3 months ago)
- Last Synced: 2026-02-14T17:05:31.794Z (3 months ago)
- Topics: build-tool, cli, developer-tools, gradle-inspired, grunt, lightweight, make, nodejs, task-orchestration, task-runner, type-safe, typescript
- Language: TypeScript
- Homepage: https://nadle.dev
- Size: 11.3 MB
- Stars: 36
- Watchers: 3
- Forks: 1
- Open Issues: 52
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
Nadle
Gradle-inspired task runner for Node.js.
Why |
Installation |
Features |
Playground |
Configuration Reference

## Features
- **Type-safe task definitions** — full TypeScript inference and compile-time checks
- **Parallel execution** — DAG-based scheduling with worker threads
- **Built-in caching** — input fingerprinting and output snapshots for incremental builds
- **Monorepo-native** — first-class support for multi-package workspaces
- **Built-in tasks** — ExecTask, PnpmTask, CopyTask, DeleteTask ready to use
- **Smart CLI** — abbreviation matching, auto-correction, dry run, summary mode
- **Zero legacy** — ESM-only, Node.js 22+, no backwards-compatibility baggage
## Quick Start
Install Nadle:
```bash
npm install -D nadle
```
Create a `nadle.config.ts`:
```ts
import { tasks } from "nadle";
tasks.register("hello", async () => {
console.log("Hello from Nadle!");
});
tasks.register("goodbye", async () => {
console.log("Goodbye!");
});
tasks.register("greet").config({
group: "Greeting",
description: "Run all greeting tasks",
dependsOn: ["hello", "goodbye"]
});
```
Run it:
```bash
npx nadle greet
```
## Nadle Builds Itself
This repository uses Nadle as its own build system — see [`nadle.config.ts`](./nadle.config.ts) for a real-world example with caching, parallel execution, and monorepo task orchestration.
## Credits
Thanks to:
- The [Gradle team](https://gradle.org/) and community for inspiring Nadle's API and dependency model.
- The [Vitest team](https://vitest.dev/) for their excellent testing framework and for the reporter logic we reuse.
## Contribution
See [Contributing Guide](https://github.com/nadlejs/nadle/blob/main/CONTRIBUTING.md)
## License
[MIT](./LICENSE) License © 2025-Present [Nam Hoang Le](https://github.com/nam-hle)