flutter build_runner花费的时间太长



我使用的是EasyLocalizationmobxJsonSerializable等。要生成*.g.dart文件,我使用build_runner watchscripts/build.sh:中的脚本

flutter packages pub run build_runner build

它最多需要2秒,但突然开始至少需要10秒0秒。由于这种情况,build_runner watch变得毫无用处,我的意思是,从那以后它就不能正常工作了。

当我运行脚本时控制台上的输出:

$ sh scripts/build.sh 
[INFO] Generating build script...
[INFO] Generating build script completed, took 611ms
[INFO] Initializing inputs
[INFO] Reading cached asset graph...
[INFO] Reading cached asset graph completed, took 126ms
[INFO] Checking for updates since last build...
[INFO] Checking for updates since last build completed, took 745ms
[INFO] Running build...
[INFO] 1.2s elapsed, 0/16 actions completed.
[INFO] 2.2s elapsed, 0/16 actions completed.
[INFO] 3.3s elapsed, 0/16 actions completed.
[INFO] 12.5s elapsed, 1/17 actions completed.
[INFO] 13.6s elapsed, 4/20 actions completed.
[INFO] Running build completed, took 14.6s
[INFO] Caching finalized dependency graph...
[INFO] Caching finalized dependency graph completed, took 57ms
[INFO] Succeeded after 14.6s with 2 outputs (47 actions)

除了避免在不必要的输入上运行构建程序外,我还通过禁用我没有使用的mockito mock生成器来加快构建速度:

build.yaml

targets:
$default:
builders:
your_builder:
generate_for:
- lib/**/*.dart
mockito:mockBuilder:
enabled: false

运行构建导致Mockito在我的每个测试文件中搜索@GenerateMocks。

我最终决定自己尝试解决这个问题,我通过在我的pubspec.yaml中添加以下内容对其进行了轻微改进:例如

targets:
$default:
builders:
json_serializable:
enabled: true
generate_for:
include:
- lib/your_codegen_folder/**.dart
- lib/**.gen.dart

希望这能为你加速一点。您必须为另外两个生成器添加构建器配置,比如这里的json_serializable生成器。我怀疑它们可能被称为easy_localizationmobx?我不知道,我是新手。

最新更新