Как работают флаги конфигурации в pubspec.yaml? - PullRequest
7 голосов
/ 20 апреля 2019

Я учу Флаттер и Дарт. Я заметил, что файл pubspec.yaml содержит больше, чем просто версии зависимостей для сторонних библиотек. Например.

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

Я понимаю, что Dart Pub Tool определяет формат для pubspec.yaml, и похоже, что фреймворки, такие как Flutter, могут улучшить pubspec.yaml с помощью дополнительных настроек, вызывающих следующие вопросы:

  • pubspec.yaml предназначен для использования для предоставления флагов конфигурации или только для зависимостей?
  • Использует ли способ трепетания pubspec.yaml идиоматический дротик или уникальный?
  • pubspec.yaml анализируется только инструментом pub или анализируется во время выполнения как общий файл конфигурации приложения?
  • Реализует ли Flutter собственный синтаксический анализатор для pubspec.yaml и делает ли такие настройки, как uses-material-design: true доступными во время выполнения?

1 Ответ

5 голосов
/ 24 апреля 2019

Разработан ли pubspec.yaml для предоставления флагов конфигурации или только для зависимостей?

Исторически он также содержал настройки сборки в чистых проектах Dart. Например, настройки для компиляции в JS, но это было перенесено в build.yaml. Смотри https://github.com/dart-lang/build/blob/master/build_config/README.md

Использует ли способ трепетания pubspec.yaml идиоматический дротик или уникальный?

Это уникально для Флаттера.

Реализует ли Flutter собственный синтаксический анализатор для pubspec.yaml и делает настройки, такие как uses-material-design: true, доступными во время выполнения?

да.

Эти настройки являются настройками времени сборки, а не настройками времени выполнения.


На самом деле мне очень жаль, что этот файл смешивает разные цели. В первые дни Flutter специфичные для Flutter настройки находились в другом файле, но это также вызывало некоторые трудности (не знаю деталей - видел только то, что упоминалось в обсуждении на GitHub), поэтому они объединили его с pubspec.yaml.

...