如何仅针对特定Target运行build_runner工具?
Dart Build 定向构建与生成文件保留方案
定向执行单个Target构建
完全可行,直接使用build_runner的--target参数指定要构建的target即可,比如仅执行drift相关构建:
dart run build_runner build --target drift
如果用监听模式:
dart run build_runner watch --target drift
这样只会触发指定target下的构建逻辑,不会干扰其他target的内容。
避免设置enable: true/false删除生成文件
别用enable字段开关target,改用build_runner的--build-filter参数过滤本次构建要处理的文件,比如只处理drift相关源码:
dart run build_runner build --build-filter="**/*.drift" --build-filter="**/*.dart"
也可以反向排除其他target的文件:
dart run build_runner build --build-filter="!**/router.dart" --build-filter="!**/graphql/**"
这种方式不会修改build.yaml配置,也不会删除已生成的其他target文件,只是限制本次构建的处理范围。
另外,还可以给不同target配置独立的outputs路径,把各target的生成文件隔离开,就算误操作也不会互相影响:
targets: $default: # ... drift: builders: drift_dev: outputs: - lib/drift_generated/ go_router: builders: go_router_builder: outputs: - lib/router_generated/
内容的提问来源于stack exchange,提问作者Gpack
相关产品推荐
相关产品推荐

