Loading...
Loading...
Best practices for creating high-quality, executable Dart CLI applications. Covers entrypoint structure, exit code handling, and recommended packages.
npx skill4agent add kevmoo/dash_skills dart-cli-app-best-practicesbin/bin/bin/my_app.dart// bin/my_app.dart
import 'package:my_app/src/entry_point.dart';
Future<void> main(List<String> arguments) async {
await runApp(arguments);
}bin/my_app.dart#!/usr/bin/env dartchmod +x bin/my_script.dart#!/usr/bin/env dart
void main() => print('Ready to run!');exitCodeexitCodemain6478package:ioExitCodeimport 'dart:io';
void main() {
if (someFailure) {
exitCode = 64; // DO!
return;
}
}exit(code)finallyFuture<void> main(List<String> arguments) async {
try {
await runApp(arguments);
} catch (e, stack) {
print('App crashed!');
print(e);
print(stack);
exitCode = 1; // Explicitly fail
}
}| Category | Recommended Package | Usage |
|---|---|---|
| Stack Traces | | detailed, cleaner stack traces |
| Version Info | | automatic version injection |
| Arg Parsing | | standard flag/option parsing |
| CLI Generation | | generate arg parsers from classes |
| Configuration | | precise YAML parsing with line numbers |
| Configuration | | strongly typed config objects |
| Testing | | integration testing for CLI apps |
| Testing | | file system fixtures for tests |
| Networking | | standard HTTP client (remember user-agent!) |
.dart_tool/[pkg_name]/package:io