build_runner
fast_dev 自带 Builder。结果和 dart run fast_dev gen 一样。目录还是看 fast_dev_config.yaml 的 generate.output。
只用 CLI 时不必装 build_runner。已经在用 build_runner 时,加 fast_dev 就会一起跑。
安装
dev_dependencies:
fast_dev: ^0.0.1-beta.1
build_runner: ^2.7.2项目里已经在用 build_runner 时,把 fast_dev 加进现有的 dev_dependencies 就行,不要另开一套。
命令
一条命令会跑这个包里所有已启用的 Builder。资源生成和其它代码生成一起出,不用分别 watch。
# 生成一次
dart run build_runner build
# 盯着改动,改 dart、资源或配置都会重跑
dart run build_runner watch只想生成资源、不走 build_runner:
dart run fast_dev gen只想重跑某一种输出(少用,日常 watch 不必加):
# 只重跑 lib 下的生成
dart run build_runner build --build-filter="lib/**"
# watch 同样可以加 filter,但会漏掉 assets/ 和配置,一般不要这样盯资源
dart run build_runner watch --build-filter="lib/**"同时开两个 watch 没必要,也容易抢文件。一个终端里一条 watch 就够。
项目里已有其它 Builder、又不想跑 Fast Dev 时,在应用的 build.yaml 里关掉:
targets:
$default:
builders:
fast_dev:fast_dev:
enabled: false和其它生成器一起
和项目里其它走 build_runner 的包一样:并列写在 dev_dependencies,共用这一条命令。
dart run build_runner watch改 lib/ 里的源码,该出的生成文件会出。加图片或改 fast_dev_config.yaml,会出 assets.gen.dart。不用为 Fast Dev 再开一个进程。
watch 要看见资源和配置
默认源集合有 lib/**,其它生成器盯的 .dart 本来就在里面。assets/ 和 fast_dev_config.yaml 不在默认集合里。想在加图或改配置时自动重跑,在应用的 build.yaml 里把它们加进 sources.include,保留 lib/**:
targets:
$default:
sources:
include:
- $package$
- lib/**
- test/**
- pubspec.yaml
- fast_dev_config.yaml
- assets/**lib/** 不要拿掉,否则其它生成器的 watch 会停。
覆盖输出目录
一般改配置文件里的 generate.output 就够。要只在 build_runner 里换目录:
targets:
$default:
builders:
fast_dev:fast_dev:
options:
output: lib/generated/怎么落盘
Builder 先写 cache 清单 .fast_dev.manifest.json,再由 post-process 落到源码树。.gen.dart 的路径来自配置,没法提前写进 build_extensions。
上一轮写过、这一轮没有的文件,会按 .dart_tool/fast_dev/owned_outputs.json 删掉。包外路径会拒绝。