mrg*_*t96 3 code-generation dart flutter build-runner
我想加快 build_runner 所需的构建时间,并且我还想在build watch编辑没有任何要生成的文件的文件时防止运行时重新构建。
我知道这需要在build.yaml文件中进行编辑,但我无法让任何东西发挥作用。
这是我的构建文件
targets:
$default:
builders:
auto_route_generator:
generate_for:
include: [".route.dart"]
freezed:
generate_for:
include: [".model.dart"]
json_serializable:
generate_for:
include: [".model.dart"]
options:
explicit_to_json: true
include_if_null: false
Run Code Online (Sandbox Code Playgroud)
即使尝试添加enabled: false(这让我相信它会禁用该依赖项的构建),也不会执行任何操作并且文件会继续生成。
也许我只是误解了构建文件应该如何使用......?
我找到了解决方案。这是非常接近 igokom 的答案。
targets:
$default:
builders:
auto_route_generator|autoRouteGenerator:
enabled: true
generate_for:
include:
- lib/infrastructure/routes/app_routes.routes.dart
# [exclude] is not needed if at least one path is provided
# in [include]. It will only target [include]d paths
# exclude:
# - ...
json_serializable:
enabled: true
generate_for:
include:
- lib/**.model.dart
- lib/**_bloc.dart
- lib/**_cubit.dart
options:
explicit_to_json: true
include_if_null: false
freezed|freezed:
enabled: true
generate_for:
include:
- lib/**.model.dart
- lib/**_bloc.dart
- lib/**_cubit.dart
injectable_generator|injectable_builder:
enabled: true
generate_for:
include:
- lib/**_bloc.dart
- lib/**_cubit.dart
- lib/**.dao.dart
injectable_generator|injectable_config_builder:
enabled: true
generate_for:
include:
- lib/infrastructure/injection/injection.dart
Run Code Online (Sandbox Code Playgroud)
我之前收到一条警告,内容如下
[WARNING] Configuring 'auto_route_generator:auto_route_generator' in target 'my_app:my_app' but this is not a known Builder
我收到此错误是因为生成器的名称auto_route不是auto_route_generator,而是autoRouteGenerator。
build.yaml这些值可以在插件文件中找到
builders:
# [autoRouteGenerator] is the name of the generator
# that needs to be referenced
autoRouteGenerator:
import: "package:auto_route_generator/builder.dart"
builder_factories: ["autoRouteGenerator"]
build_extensions: {'.dart': ['.gr.dart']}
auto_apply: dependents
build_to: source
Run Code Online (Sandbox Code Playgroud)
目标可以在“$definingPackageName:$targetname”中引用。当目标名称与包名称匹配时,它也可以仅被称为包名称。每个包中的一个目标必须使用包名称,以便消费者默认使用它。在 build.yaml 文件中,可以使用键 $default 或包的名称来定义此目标。
您可以在此处找到有关它的更多信息,这是一篇非常好的文章,为该build.yaml文件提供了一些很好的提示
v6对于那些使用auto_route_library使用auto_route_generator|autoRouteBuilder和auto_route_generator|autoRouterBuilder
可以参考v6-build.yaml
| 归档时间: |
|
| 查看次数: |
7030 次 |
| 最近记录: |