如何在Dart和Flutter中用build_runner加快代码生成速度

525 阅读1分钟

代码生成在我们的Flutter应用程序中有很多用例,包括JSON序列化导航国际化

Freezed这样的包弥补了Dart语言功能的缺失,如密封的联合体,并提供了许多有用的功能。

许多Flutter软件包依赖于build_runner,这是一个用于生成Dart代码的构建系统。

不幸的是,build_runner需要很长的时间来运行,因为默认情况下它会分析你项目中所有的Dart源文件。

有两种方法可以缓解这个问题。

  1. 将所有依赖codegen的文件移到一个单独的包中
  2. 添加一个build.yaml 文件,指定要处理的文件的子集。
targets:
  $default:
    builders:
      freezed:freezed:
        generate_for:
          include:
            - lib/models/**.dart

从长远来看,正确地设置这一点可以为你节省大量的时间。👍

额外提示

你可以使用一个后缀,如*.codegen.dart ,用于所有需要由build_runner 处理的文件,并像这样更新build.yaml

targets:
  $default:
    builders:
      freezed:freezed:
        generate_for:
          include:
            - lib/**.codegen.dart

这样你就可以把文件放在项目中任何你想放的地方


这个提示的灵感来自于Twitter上的这个主题

编码愉快!