引言
大家好,《Flutter 开发之旅从南到北》已经在各大书店开始同步发售了,我写的这一系列旨在分享一些我想要继续分享,但碍于书中篇幅和话题的限制,没有深入分析的部分,读者们可以在学有余力的情况下在这里继续拓展下去。
今天要讨论的话题是 Flutter 项目中的 pubspec.yaml 配置文件。
无论开发移动应用、Web 应用还是桌面应用,每个 Flutter/Dart 项目中都会包含 pubspec.yaml
、pubspec.lock
两个文件。
这篇文章就带大家深入了解 pubspec.yaml
文件的作用以及在真实项目中我们该如何使用它。
文章大纲:
YAML
pubspec.yaml
是隶属于 YAML 格式的文件,那么,了解 pubspec.yaml
具体内容之前,我们有必要先了解一下 YAML。
YAML 是专门用来写配置文件的数据格式化语言,功能简洁且强大,相比 JSON 格式也更易于人类阅读。其基本语法规则如下。
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用 Tab 键,只允许使用空格。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- '#' 表示注释
yaml 中,对象键值对使用冒号结构表示 key: value,冒号后面要加一个空格,也可以使用 key:{key1: value1, key2: value2, ...}。还可以使用缩进表示层级关系。如下:
key:
child-key: value
child-key2: value2
类比 JSON 中的:
{
key: {
child-key: value,
child-key2: value2
}
}
yaml 中,以 - 开头的行表示构成一个数组:
- Cat
- Dog
- Goldfish
这里,各项缩进相同,表示属于同级数组,就可以类比 JSON 中的 [ 'Cat', 'Dog', 'Goldfish' ]
。
此外,YAML 也可视为 JSON 的自然超集(Natural Superset ),也就是每个 JSON 文件也是一个有效的 YAML 文件,同样还支持字符串、布尔值、整数、浮点数、Null、时间、日期等纯量,作为预备知识我们可以先了解到此。
阅读更多 YAML 的内容,可以参考官网:yaml.org
pubspec.yaml
一般,新的 Flutter 项目结构如下,pubspec.yaml 总是处在项目根目录:
.
├── README.md
├── android
├── ios
├── lib
├── pubspec.lock
├── pubspec.yaml
├── test
└── web
下面就是 pubspec.yaml 的一个基本示例:
# 元数据
name: flutterapp
description: A new Flutter project.
version: 1.0.0+1
# 环境
environment:
sdk: ">=2.1.0 <3.0.0"
# 依赖库
dependencies: