pubspec.yaml 中的配置标志如何工作?

How do configuration flags in pubspec.yaml work?

我正在学习 Flutter 和 Dart。我注意到 pubspec.yaml 文件似乎不仅仅包含第三方库的依赖版本。例如。

# The following section is specific to Flutter.
flutter:
  uses-material-design: true

我知道 Dart Pub Tool 定义了 pubspec.yaml 的格式,而且像 Flutter 这样的框架似乎可以通过额外的设置来增强 pubspec.yaml,从而引发以下问题:

Is pubspec.yaml designed to be used to provide configuration flags or only dependencies?

从历史上看,它还包含纯 Dart 项目中的构建设置。例如编译为 JS 的设置,但已移出 build.yaml。参见 https://github.com/dart-lang/build/blob/master/build_config/README.md

Does the way flutter use pubspec.yaml idiomatic Dart or unique?

这是 Flutter 独有的。

Does Flutter implement it's own parser for pubspec.yaml and make settings like uses-material-design: true available at runtime?

是的。

不过这些设置是构建时设置,而不是运行时设置。


实际上我觉得很不幸,这个文件混淆了不同的用途。在早期的 Flutter 时代,Flutter 特定的设置在不同的文件中,但这也造成了一些困难(不知道细节 - 只在 GitHub 讨论中看到它)所以他们将它与 pubspec.yaml 合并.