knife_generator 1.0.0 copy "knife_generator: ^1.0.0" to clipboard
knife_generator: ^1.0.0 copied to clipboard

Code generator for the Knife compile-time dependency injection library.

knife_generator #

Code generator for Knife, библиотеки compile-time dependency injection на Dart.

Этот пакет подключается в dev_dependencies и используется вместе с build_runner. Аннотации лежат в отдельном пакете knife_annotations.

Установка #

dependencies:
  knife_annotations: ^1.0.0

dev_dependencies:
  knife_generator: ^1.0.0
  build_runner: ^2.4.9

Как устроена библиотека #

Knife описывает DI-граф через два основных понятия: компоненты и модули.

Компонент это корневая точка входа в граф зависимостей. Он перечисляет модули, которые участвуют в сборке, и объявляет методы, через которые можно получить готовые зависимости.

Модуль это описание правил, по которым зависимости попадают в граф. В модуле можно:

  • создать зависимость вручную через @provides
  • связать абстракцию с реализацией через @binds

Если зависимость не создаётся методом модуля, она может быть построена через конструктор, помеченный @inject.

Как запустить генератор #

Установить зависимости:

dart pub get

Запустить генерацию:

dart run build_runner build

Если нужно пересобрать файлы с перезаписью конфликтующих outputs:

dart run build_runner build --delete-conflicting-outputs

В результате генератор создаёт:

  • *.component.dart для компонентов
  • *.module.dart для модулей с @binds

Что делает пакет #

  • анализирует аннотации из knife_annotations
  • строит граф зависимостей во время генерации
  • генерирует типобезопасные component и module реализации
  • показывает ошибки сборки графа на этапе compile-time

Ограничения #

  • Циклические зависимости не поддерживаются
  • Generic-методы в провайдерах не поддерживаются
  • Lazy initialization не поддерживается
0
likes
125
points
123
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Code generator for the Knife compile-time dependency injection library.

Repository (GitHub)
View/report issues

Topics

#dependency-injection #codegen #build-runner

License

Apache-2.0 (license)

Dependencies

analyzer, build, code_builder, collection, dart_style, knife_annotations, source_gen

More

Packages that depend on knife_generator