# Nadle > A type-safe, Gradle-inspired task runner for Node.js. Sharp tasks. Fast builds. ## docs ### API Reference - [API Reference](/docs/api/index.md): Namespaces - [ConfigurationError](/docs/api/index/classes/ConfigurationError.md): * - [CyclicDependencyError](/docs/api/index/classes/CyclicDependencyError.md): * - [NadleError](/docs/api/index/classes/NadleError.md): * - [TaskExecutionError](/docs/api/index/classes/TaskExecutionError.md): * - [TaskNotFoundError](/docs/api/index/classes/TaskNotFoundError.md): * - [TaskStatus](/docs/api/index/enumerations/TaskStatus.md): * - [configure](/docs/api/index/functions/configure.md): * - [definePlugin](/docs/api/index/functions/definePlugin.md): * - [defineTask](/docs/api/index/functions/defineTask.md): * - [use](/docs/api/index/functions/use.md): * - [CopyTaskOptions](/docs/api/index/interfaces/CopyTaskOptions.md): * - [DefineTaskParams](/docs/api/index/interfaces/DefineTaskParams.md): * - [DeleteTaskOptions](/docs/api/index/interfaces/DeleteTaskOptions.md): * - [DirDeclaration](/docs/api/index/interfaces/DirDeclaration.md): * - [DownloadTaskOptions](/docs/api/index/interfaces/DownloadTaskOptions.md): * - [ExecTaskOptions](/docs/api/index/interfaces/ExecTaskOptions.md): * - [FileDeclaration](/docs/api/index/interfaces/FileDeclaration.md): * - [FileOperationOptions](/docs/api/index/interfaces/FileOperationOptions.md): * - [FileSelector](/docs/api/index/interfaces/FileSelector.md): * - [Listener](/docs/api/index/interfaces/Listener.md): * - [Logger](/docs/api/index/interfaces/Logger.md): * - [MoveTaskOptions](/docs/api/index/interfaces/MoveTaskOptions.md): * - [NadleBaseOptions](/docs/api/index/interfaces/NadleBaseOptions.md): * - [NadleFileOptions](/docs/api/index/interfaces/NadleFileOptions.md): * - [NadlePlugin](/docs/api/index/interfaces/NadlePlugin.md): * - [NodeTaskOptions](/docs/api/index/interfaces/NodeTaskOptions.md): * - [NpmTaskOptions](/docs/api/index/interfaces/NpmTaskOptions.md): * - [NpxTaskOptions](/docs/api/index/interfaces/NpxTaskOptions.md): * - [PluginHooks](/docs/api/index/interfaces/PluginHooks.md): * - [PluginReporter](/docs/api/index/interfaces/PluginReporter.md): * - [PluginTask](/docs/api/index/interfaces/PluginTask.md): * - [PnpmTaskOptions](/docs/api/index/interfaces/PnpmTaskOptions.md): * - [PnpxTaskOptions](/docs/api/index/interfaces/PnpxTaskOptions.md): * - [RegisteredTask](/docs/api/index/interfaces/RegisteredTask.md): * - [ReporterContext](/docs/api/index/interfaces/ReporterContext.md): * - [RunHookContext](/docs/api/index/interfaces/RunHookContext.md): * - [RunnerContext](/docs/api/index/interfaces/RunnerContext.md): * - [SyncTaskOptions](/docs/api/index/interfaces/SyncTaskOptions.md): * - [Task](/docs/api/index/interfaces/Task.md): * - [TaskConfiguration](/docs/api/index/interfaces/TaskConfiguration.md): * - [TaskConfigurationBuilder](/docs/api/index/interfaces/TaskConfigurationBuilder.md): * - [TaskHookContext](/docs/api/index/interfaces/TaskHookContext.md): * - [TasksAPI](/docs/api/index/interfaces/TasksAPI.md): * - [UnzipTaskOptions](/docs/api/index/interfaces/UnzipTaskOptions.md): * - [ZipTaskOptions](/docs/api/index/interfaces/ZipTaskOptions.md): * - [README](/docs/api/index/namespaces/Inputs.md): * - [dirs](/docs/api/index/namespaces/Inputs/functions/dirs.md): * - [files](/docs/api/index/namespaces/Inputs/functions/files.md): * - [README](/docs/api/index/namespaces/MaybeArray.md): * - [toArray](/docs/api/index/namespaces/MaybeArray/functions/toArray.md): * - [README](/docs/api/index/namespaces/Outputs.md): * - [dirs](/docs/api/index/namespaces/Outputs/variables/dirs.md): * - [files](/docs/api/index/namespaces/Outputs/variables/files.md): * - [README](/docs/api/index/namespaces/TaskIdentifier.md): * - [create](/docs/api/index/namespaces/TaskIdentifier/functions/create.md): * - [parser](/docs/api/index/namespaces/TaskIdentifier/functions/parser.md): * - [AliasOption](/docs/api/index/type-aliases/AliasOption.md): * - [Awaitable](/docs/api/index/type-aliases/Awaitable.md): * - [Callback](/docs/api/index/type-aliases/Callback.md): * - [Declaration](/docs/api/index/type-aliases/Declaration.md): * - [FileSelection](/docs/api/index/type-aliases/FileSelection.md): * - [MaybeArray](/docs/api/index/type-aliases/MaybeArray.md): * - [OverwritePolicy](/docs/api/index/type-aliases/OverwritePolicy.md): * - [Resolver](/docs/api/index/type-aliases/Resolver.md): * - [SupportLogLevel](/docs/api/index/type-aliases/SupportLogLevel.md): * - [SupportReporter](/docs/api/index/type-aliases/SupportReporter.md): * - [TaskEnv](/docs/api/index/type-aliases/TaskEnv.md): * - [TaskFn](/docs/api/index/type-aliases/TaskFn.md): * - [TaskIdentifier](/docs/api/index/type-aliases/TaskIdentifier.md): * - [CopyTask](/docs/api/index/variables/CopyTask.md): * - [DeleteTask](/docs/api/index/variables/DeleteTask.md): * - [DownloadTask](/docs/api/index/variables/DownloadTask.md): * - [ExecTask](/docs/api/index/variables/ExecTask.md): * - [MoveTask](/docs/api/index/variables/MoveTask.md): * - [NodeTask](/docs/api/index/variables/NodeTask.md): * - [NpmTask](/docs/api/index/variables/NpmTask.md): * - [NpxTask](/docs/api/index/variables/NpxTask.md): * - [PnpmTask](/docs/api/index/variables/PnpmTask.md): * - [PnpxTask](/docs/api/index/variables/PnpxTask.md): * - [SupportLogLevels](/docs/api/index/variables/SupportLogLevels.md): * - [SupportReporters](/docs/api/index/variables/SupportReporters.md): * - [SyncTask](/docs/api/index/variables/SyncTask.md): * - [tasks](/docs/api/index/variables/tasks.md): * - [UnzipTask](/docs/api/index/variables/UnzipTask.md): * - [ZipTask](/docs/api/index/variables/ZipTask.md): * ### cli-reference Complete machine-readable reference of every Nadle CLI flag, its alias, type, default, and description, generated from source. - [CLI Reference](/docs/cli-reference.md): Complete machine-readable reference of every Nadle CLI flag, its alias, type, default, and description, generated from source. ### Concepts - [Task](/docs/concepts/task.md): Understand the Nadle task model — naming rules, scopes, identifiers, and how tasks form the core unit of work in your build pipeline. - [Workspace](/docs/concepts/workspace.md): Learn how Nadle discovers workspaces, resolves workspace identifiers, and manages per-workspace configuration in monorepo projects. ### Config Reference Complete reference for Nadle CLI options, configuration file settings, and nadle.config.ts schema for task runner customization. - [Configuration Reference](/docs/config-reference.md): Complete reference for Nadle CLI options, configuration file settings, and nadle.config.ts schema for task runner customization. ### Getting Started - [Features](/docs/getting-started/features.md): Explore Nadle features including type-safe tasks, DAG-based parallel execution, input/output caching, monorepo support, and smart CLI. - [Autocorrection](/docs/getting-started/features/auto-correction.md): Nadle automatically corrects typos and partial task names using fuzzy matching, so misspelled commands still run the right task. - [Editor Support](/docs/getting-started/features/editor-support.md): Get real-time diagnostics, autocompletion, and hover info for nadle.config.ts with the Nadle Language Server, VS Code extension, and IntelliJ plugin. - [Monorepo Support](/docs/getting-started/features/monorepo.md): Learn how Nadle detects and manages monorepo workspaces, resolves cross-package tasks, and orchestrates builds across packages. - [Installation](/docs/getting-started/installation.md): Install Nadle with npm, yarn, or pnpm and set up your first nadle.config.ts in minutes. Requires Node.js 22 or later. - [Playground](/docs/getting-started/playground.md): Try Nadle directly in your browser with an interactive CodeSandbox playground. No installation required. - [Quickstart for Agents](/docs/getting-started/quickstart-for-agents.md): Dense, copy-pasteable Nadle quickstart for AI agents and scripts. Install, write a config, and run tasks with the most common commands. ### Guides - [Configuring Nadle](/docs/guides/configuring-nadle.md): Use the configure() function in nadle.config.ts to set global runtime options like log level, parallelism, and cache behavior. - [Configuring Task](/docs/guides/configuring-task.md): Configure Nadle tasks with dependsOn, inputs, outputs, environment variables, and caching using the .config() method. - [Defining Task](/docs/guides/defining-task.md): Use the defineTask API to create reusable, type-safe task classes with custom options that integrate with Nadle's runtime. - [ESLint Plugin](/docs/guides/eslint-plugin.md): eslint-plugin-nadle provides ESLint rules for nadle.config.ts files, catching common configuration mistakes at authoring time. - [Executing Task](/docs/guides/executing-task.md): Run Nadle tasks from the CLI — single tasks, multiple tasks, workspace-scoped execution, dry run, and summary mode. - [File Operation Tasks](/docs/guides/file-operation-tasks.md): Copy, move, sync, zip, unzip, download, and delete files with Nadle's built-in file-operation tasks. - [Registering Task](/docs/guides/registering-task.md): Register tasks in Nadle using tasks.register — as empty aggregation tasks, inline actions, or reusable defineTask classes. ### introduction Nadle is a modern, type-safe, Gradle-inspired task runner for Node.js with parallel execution, caching, and monorepo support. - [Introduction](/docs/introduction.md): Nadle is a modern, type-safe, Gradle-inspired task runner for Node.js with parallel execution, caching, and monorepo support. ### why-nadle Compare Nadle with Gradle, npm scripts, nx, and turborepo. Learn why Nadle is the best task runner for modern JavaScript and TypeScript projects. - [Why Nadle?](/docs/why-nadle.md): Compare Nadle with Gradle, npm scripts, nx, and turborepo. Learn why Nadle is the best task runner for modern JavaScript and TypeScript projects. ## Optional - [Specification](https://main--nadle.netlify.app/spec/): The language-agnostic specification — the single source of truth for Nadle behavior.