inject_compile_generator 0.9.2
inject_compile_generator: ^0.9.2 copied to clipboard
The dev dependency for package:inject_compile that enables compile time dependency injection.
Compile-Time Dependency Injection Code Generator #
This package provides the build_runner code generator for inject_compile.
It processes your dependency injection annotations to generate the boilerplate
graph wiring at build time.
Getting Started #
Add inject_compile_generator to your dev_dependencies alongside build_runner,
and inject_compile to your regular dependencies:
dependencies:
inject_compile: ^0.9.0
dev_dependencies:
build_runner: ^2.4.0
inject_compile_generator: ^0.9.0
Running the Generator #
To generate the DI files, run the build runner command in your project directory:
dart run build_runner build
To continuously watch files and regenerate them during development:
dart run build_runner watch
How It Works #
The code generator runs in two phases to optimize build speed:
- Summary Extraction: First, a
SummaryBuilderextracts metadata from@provide,@module, and@injectorannotations into lightweight.inject.summarycache files. - Code Generation: Next, an
InjectBuilderreads these summaries, resolves the complete dependency tree, validates it for issues like circular dependencies, and outputs concrete.inject.dartimplementations usingcode_builder.
Since validation occurs at compile-time, errors such as missing dependencies or dependency cycles are reported directly during the build process, preventing runtime exceptions.
Next Steps #
- To learn how to define your object graph, visit the
inject_compileannotations library. - For complete samples, see the workspace examples.
Acknowledgement #
Please note that all of the original code in inject.dart which these packages is heavily based on is Copyright by Google and originally licenced under a MIT Licence which has been kept. Special thanks to Matan Lurey who was the primary original author.