flutter build_runner 耗时太长

Muh*_*gan 11 flutter flutter-build

我正在使用EasyLocalization、等mobxJsonSerializable为了生成*.g.dart文件,我正在使用build_runner watch或 中的脚本 scripts/build.sh

flutter packages pub run build_runner build
Run Code Online (Sandbox Code Playgroud)

最多也就两秒,但突然间就开始至少需要十秒,有时甚至是三十秒。由于这种情况,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)
Run Code Online (Sandbox Code Playgroud)

Cla*_*vum 5

除了避免在不必要的输入上运行构建器之外,我还设法通过禁用我没有使用的mockito模拟生成器来使我的构建速度更快:

构建.yaml

targets:
  $default:
    builders:
      your_builder:
        generate_for:
          - lib/**/*.dart
      mockito:mockBuilder:
        enabled: false
Run Code Online (Sandbox Code Playgroud)

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


JJ *_*sis 4

我最终决定尝试自己解决这个问题,我通过将以下内容添加到我的 pubspec.yaml 中稍微改进了它:例如

targets:
  $default:
    builders:
      json_serializable:
        enabled: true
        generate_for:
          include:
            - lib/your_codegen_folder/**.dart
            - lib/**.gen.dart
Run Code Online (Sandbox Code Playgroud)

希望这能为您加快一点速度。您必须为其他两个生成器添加构建器配置,例如此处的 json_serialized 生成器。我怀疑他们可能会被提及,easy_localization并且mobx?我不知道,我是新手。