Skip to main content

Features

Nadle comes packed with powerful features to make your build automation and task management more efficient. Here's a comprehensive overview of what Nadle offers.

Type Safety

TypeScript First

  • Built from the ground up with TypeScript
  • Complete type inference for tasks and configurations
  • Compile-time error detection
  • IDE support with IntelliSense

Type-Safe Task Options

interface BuildOptions {
target: "web" | "mobile";
optimize: boolean;
}

tasks
.register("build", async ({ options }) => {
const { target, optimize } = options;
// Type-safe access to options
})
.config<BuildOptions>({
defaultOptions: {
target: "web",
optimize: false
}
});

Task Management

Parallel Execution

  • Automatic parallel task execution
  • Smart dependency resolution
  • Configurable concurrency limits
  • Progress tracking for parallel tasks
tasks
.register("build:all", async () => {
// These tasks will run in parallel if possible
})
.config({
dependsOn: ["build:web", "build:mobile", "build:desktop"]
});

Dependency Management

  • Clear dependency declaration
  • Circular dependency detection
  • Optional dependencies
  • Dynamic dependency resolution
tasks
.register("deploy", async () => {
// Deploy implementation
})
.config({
dependsOn: ["build", "test"],
optionalDependsOn: ["lint"]
});

Progress Tracking

Real-Time Progress

  • Task execution status
  • Progress bars for long-running tasks
  • Time tracking
  • Detailed error reporting

Logging System

  • Multiple log levels
  • Structured logging
  • Color-coded output
  • Custom log formatters
tasks.register("build", async ({ logger }) => {
logger.info("Starting build...");
logger.progress(0.5, "Compiling...");
// ... build steps
logger.success("Build completed");
});

Watch Mode

File Watching

  • Efficient file system watching
  • Pattern matching
  • Debounced rebuilds
  • Custom watch patterns
tasks.register("watch", async () => {
return {
paths: ["src/**/*.ts"],
ignore: ["**/*.test.ts"],
onChange: async (changes) => {
await tasks.run("build");
}
};
});

Plugin System

Extensible Architecture

  • Custom task types
  • Build hooks
  • Configuration extensions
  • Third-party integrations
import { TypeScriptPlugin } from "@nadle/typescript";

configure({
plugins: [
new TypeScriptPlugin({
tsconfig: "tsconfig.json"
})
]
});

Environment Management

Environment Variables

  • .env file support
  • Environment-specific configs
  • Runtime environment detection
  • Secure secrets handling

Multiple Environments

  • Development/Staging/Production configs
  • Environment-specific tasks
  • Local overrides
  • CI/CD integration

Task Organization

Grouping and Naming

  • Logical task groups
  • Namespace support
  • Consistent naming conventions
  • Task discovery
tasks
.register("build:web", async () => {
// Implementation
})
.config({
group: "Build",
description: "Build web application"
});

Error Handling

Robust Error Management

  • Detailed error messages
  • Stack trace preservation
  • Error recovery options
  • Custom error handlers
tasks.register("deploy", async ({ logger }) => {
try {
// Deployment steps
} catch (error) {
logger.error("Deployment failed", { error });
// Cleanup or rollback steps
}
});

Performance

Build Optimization

  • Caching support
  • Incremental builds
  • Resource management
  • Performance profiling

Memory Management

  • Efficient resource utilization
  • Memory leak prevention
  • Garbage collection optimization
  • Resource cleanup

Integration

Tool Integration

  • Popular build tool integration
  • Version control system hooks
  • CI/CD pipeline support
  • Container orchestration

Ecosystem Compatibility

  • npm scripts integration
  • Package manager support
  • Framework compatibility
  • Cloud platform support

Next Steps

  1. Dive into Configuration Reference
  2. Explore API Documentation