Flutter多环境配置合并插件flavors_yaml_merger的使用

Flutter多环境配置合并插件flavors_yaml_merger的使用

Overview

flavors_yaml_merger 是一个 Dart 命令行工具,用于将当前构建风味的 YAML 内容合并到主 pubspec.yaml 文件中。这主要帮助你移除其他应用风味的资源和依赖项,使你可以更专注于构建功能而不是担心在下一次应用构建中包含所有风味的资源,并动态增加最终应用的大小。你还可以利用匹配器功能将构建风味文件内容与其对应的 pubspec.yaml 部分匹配起来,确保构建过程中不会缺少任何依赖项。

使用这种方法可以减少开发人员在项目中移除其他应用风味依赖项的工作量,甚至可以在你的 CI/CD 管道中使用。

Installation

添加到开发依赖项:

dart pub add --dev flavors_yaml_merger

或者通过 Flutter 使用:

flutter pub add --dev flavors_yaml_merger
Activate the tool in Dart

你需要在 Dart 中激活它才能使用:

dart pub global activate flavors_yaml_merger

Usage

基本用法只需执行以下步骤:

  1. 为每个应用风味创建一个单独的 pubspec 文件。
  2. 文件名必须遵循以下格式 <pubspec_flavor>.yaml,其中 <flavor> 是你的构建风味名称。
  3. 在相应的 pubspec 文件中包含特定风味的依赖项。
  4. 所有风味的 pubspec 依赖项应该在根部分中,如示例所示。

运行此命令以合并风味文件:

dart run flavors_yaml_merger -f <flavor>

# 或者使用类似的命令
dart run flavors_yaml_merger --flavor_name <flavor>

运行此命令以恢复主 pubspec.yaml

dart run flavors_yaml_merger:restore_backup_yaml

使用 -m 标志启用 YAML 匹配器:

dart run flavors_yaml_merger -f <flavor> -m

# 或者使用类似的命令
dart run flavors_yaml_merger --matcher true

使用 -b 标志禁用 pubspec.yaml 的备份:

dart run flavors_yaml_merger -f <flavor> -b false

# 这与以下命令相似:
dart run flavors_yaml_merger -f <flavor> --enable_backup false

你也可以通过使用以下命令来使用自己的风味 YAML 路径和命名方案:

dart run flavors_yaml_merger -f <flavor> -p "path_to_flavor_yaml"

# 这与以下命令相似:
dart run flavors_yaml_merger -f <flavor> --flavor_path "path_to_flavor_yaml"

Example: pubspec_dev.yaml

这是一个风味文件的示例:

dependencies:
  cupertino_icons: ^1.0.2
  dio: ^5.2.1+1
  shared_preferences: ^2.2.2

fonts:
  - family: ibm plex
    fonts:
      - asset: assets/flavor1/fonts/body_label/IBMPlexSansArabic-Regular.ttf
        weight: 300
      - asset: assets/flavor1/fonts/body_label/IBMPlexSansArabic-Regular.ttf
        weight: 400
      - asset: assets/flavor1/fonts/body_label/IBMPlexSansArabic-Medium.ttf
        weight: 500
      - asset: assets/flavor1/fonts/body_label/IBMPlexSansArabic-SemiBold.ttf
        weight: 600
      - asset: assets/flavor1/fonts/body_label/IBMPlexSansArabic-SemiBold.ttf
        weight: 700

assets:
  - assets/flavor1/png/
  - assets/flavor1/png/onboarding/
  - assets/flavor1/animation/

pubspec.yaml

如果启用了匹配器,则 pubspec.yaml 必须包含风味文件中存在的所有部分。如果启用了匹配器,你需要添加相应的注释来定义匹配器的风味部分。

dependencies:
  # flavor flavor1_name                  <- 添加这一行在 flavor1 依赖项
  cupertino_icons: ^1.0.2
  dio: ^5.2.1+1
  shared_preferences: ^2.2.2
  # end flavor flavor1_name              <- 添加这一行在 flavor1 依赖项

  # flavor flavor2_name                  <- 添加这一行在 flavor2 依赖项
  connectivity_plus: ^5.0.1
  # end flavor flavor2_name              <- 添加这一行在 flavor2 依赖项


fonts:
  # flavor flavor1_name                  <- 添加这一行在 flavor1 字体
  - family: ibm plex
    fonts:
      - asset: assets/flavor1/fonts/body_label/IBMPlexSansArabic-Regular.ttf
        weight: 300
      - asset: assets/flavor1/fonts/body_label/IBMPlexSansArabic-Regular.ttf
        weight: 400
      - asset: assets/flavor1/fonts/body_label/IBMPlexSansArabic-Medium.ttf
        weight: 500
      - asset: assets/flavor1/fonts/body_label/IBMPlexSansArabic-SemiBold.ttf
        weight: 600
      - asset: assets/flavor1/fonts/body_label/IBMPlexSansArabic-SemiBold.ttf
        weight: 700
  # end flavor flavor1_name              <- 添加这一行在 flavor1 字体

assets:
  # flavor flavor1_name                  <- 添加这一行在 flavor1 资源
  - assets/flavor1/png/
  - assets/flavor1/png/onboarding/
  - assets/flavor1/animation/
  # end flavor flavor1_name              <- 添加这一行在 flavor1 资源

  - assets/flavor1/locales/

如果你没有禁用备份,你需要运行此命令来恢复主 pubspec.yaml

dart run flavors_yaml_merger:restore_backup_yaml

更多关于Flutter多环境配置合并插件flavors_yaml_merger的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter多环境配置合并插件flavors_yaml_merger的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用flavors_yaml_merger插件来管理多环境配置的详细步骤和代码示例。flavors_yaml_merger插件允许你将多个YAML文件合并到一个主要的pubspec.yaml文件中,从而方便地管理不同环境(如开发、测试、生产)的配置。

1. 安装插件

首先,在你的Flutter项目根目录下运行以下命令来安装flavors_yaml_merger插件:

flutter pub add flavors_yaml_merger

2. 创建环境配置文件

在项目的根目录下创建多个YAML文件,每个文件代表一个环境配置。例如,创建pubspec.dev.yamlpubspec.test.yamlpubspec.prod.yaml文件。

pubspec.dev.yaml 示例

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.0
  # 开发环境特有的依赖
  mockito: ^5.0.0

pubspec.test.yaml 示例

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.0
  # 测试环境特有的依赖
  test: ^1.16.0

pubspec.prod.yaml 示例

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.0
  # 生产环境特有的依赖
  firebase_core: ^1.0.0

3. 配置pubspec.yaml

在你的主pubspec.yaml文件中,添加对flavors_yaml_merger的配置。确保在dev_dependencies中包含它,并添加flavor_config部分。

name: your_app_name
description: A new Flutter project.

# The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev

version: 1.0.0+1

environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons: ^1.0.0

dev_dependencies:
  flutter_test:
    sdk: flutter
  flavors_yaml_merger: ^x.y.z # 替换为最新版本号

flutter:
  uses-material-design: true

# Flavors configuration
flavor_config:
  flavors:
    dev:
      merge_with: pubspec.dev.yaml
    test:
      merge_with: pubspec.test.yaml
    prod:
      merge_with: pubspec.prod.yaml

4. 运行Flutter命令指定环境

为了构建特定环境的Flutter应用,你需要使用--flavor参数。例如,要构建开发环境的应用,可以运行:

flutter run --flavor dev

同样地,为了构建测试环境和生产环境的应用,可以分别运行:

flutter run --flavor test
flutter run --flavor prod

5. 自动合并配置文件

flavors_yaml_merger插件会在构建时自动合并指定的YAML文件到主pubspec.yaml中。这意味着,当你运行带有--flavor参数的Flutter命令时,相应的依赖和环境配置会被自动应用。

总结

通过上述步骤,你可以使用flavors_yaml_merger插件在Flutter项目中方便地管理多环境配置。这种方法不仅简化了依赖管理,还提高了构建和部署的效率。确保在实际项目中根据需求调整YAML文件的内容和结构。

回到顶部