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
- Dive into Configuration Reference
- Explore API Documentation