什么是Flutter的pubspec.yaml?介绍其含义和编写方法!

YAML是什么?

YAML是“YAML Ain’t Markup Language”的缩写,是一种数据序列化语言,用于简洁地表示数据。它被用于配置文件(如Config文件)和类似JSON的数据文件。

其特点是,YAML像Python一样使用缩进来表达层次结构的数据。

什么是Flutter的pubspec.yaml?

“pubspec.yaml”是Flutter项目的配置文件,它管理应用程序的名称、描述、版本信息以及项目依赖的包信息和这些包的版本等。

pubspec.yaml的结构

“pubspec.yaml”的基本结构如下:

  • “name”
     应用程序的名称。
  • “description”
     应用程序的简单描述。
  • “version”
     应用程序的版本。
  • “environment”
     指定该项目所依赖的Flutter SDK版本。
  • “dependencies”
     指定该项目所依赖的外部包。
  • “dev_dependencies”
     指定仅在开发中使用的包(如测试框架)。
     如buildrunner和riverpod_generator等开发时运行的包应定义在此。

实际上,它的编写如下:

name: check
description: A new Flutter project.
version: 1.0.0+1
environment:
sdk: ">=2.17.6 <3.18.2"

dependencies:
cupertino_icons: 1.0.2
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
flutter_riverpod:

dev_dependencies:
build_runner: ^2.4.0
dart_code_metrics: ^5.7.0
flutter_test:
sdk: flutter

pubspec.yaml版本号的含义

包的版本号以“主版本.次版本.补丁”格式表示。
各数字的含义如下:

  • “Major(主版本)”:当进行不兼容的重大修改时增加。
  • “Minor(次版本)”:在不影响现有功能的情况下添加功能时增加。
  • “Patch(补丁)”:进行错误修正或小改动时增加。

例如,指定[包名:3.12.4]时,Major 3,Minor 12,Patch 4。

指定pubspec.yaml的版本

pubspec.yaml中的版本指定可以如下编写:

包名:[空白]
 如果不指定版本,则会自动选择最新版本。
 有时候会有破坞性变化(现有代码无法启动等),因此特别是对于重要的包,建议指定具体版本。

包名:1.0.0
 指定版本时选择的是记录的版本。

包:”>=1.0.0 <2.0.0″
 指定版本范围时,会选择指定范围内的版本。

包:^1.0.0
 指定版本及以上,且主版本号相同的版本范围将自动被选择。
 这种情况下,“>=1.0.0 <2.0.0”是等效的。

如果不指定版本,则自动选择最新版本,但为避免预期外的问题,
特别是对于重要的包,推荐指定具体版本。

什么是pubspec.lock?

“pubspec.lock”文件记录了使用的各个包的具体版本。如果指定了包的版本范围,则实际选择的版本可以在此查看。

版本更新命令

仅通过编写pubspec.yaml,版本不会更新。请参考以下命令进行操作:

  • 安装:”flutter pub get”
     安装pubspec.yaml中记录的包。如果已安装,则更新包的版本至最新。
  • 升级:”flutter pub upgrade”
     将包的版本更新至最新版本。如果指定了范围,则更新至该范围内的最新版本。
  • 降级:”flutter pub downgrade”
     将包的版本更新至最旧版本。如果指定了范围,则更新至该范围内的最旧版本。
  • 版本依赖关系检查:”flutter pub deps”
     可以检查包之间的版本依赖关系。显示项目的依赖关系树,并可以参考包与包之间的依赖关系。
  • 版本检查:”flutter pub outdated”
     可以检查以下项目的版本信息:
     Current:当前版本
     Upgradable:pubspec.yaml文件允许的最新版本
     Resolvable:依赖其他包可用的版本
     Latest:可用包的最新版本
  • 主版本升级:flutter pub upgrade –major-versions
     尽可能将pubspec.yaml文件中列出的包更新至最新版本。
  • 单独更新:”flutter pub [命令] [包名]”
     在上述命令后指定包名,可以更新该包。
     例如安装”freezed”:flutter pub get freezed

总结

虽然“pubspec.yaml”在Flutter项目中主要承担包管理的角色,但它还可以定义项目元数据、管理外部包的依赖关系和指定资源等。

使用pubspec.yaml进行版本管理对于Flutter应用的开发非常重要,我经常因为版本管理失败而无法构建,或无法执行buildrunner。

希望这篇文章能帮助那些在设计pubspec.yaml时遇到困难的人。

タイトルとURLをコピーしました