pubspec的格式
必填属性:
选填属性:
- Author/Authors
- Homepage
- Repository
- Issue tracker
- Documentation
- Dependencies
- Executables
- Publish_to
- SDK constraints
name
当前项目的名称,也是在pub世界中的唯一名称。
命名规范,与一般的编程名词基本一致,只能使用a-z0-9_
这些字符,且不能以数字开头
version
项目的版本号,遵从版本语法规范
description
项目的描述
author / authors
[name]<[email]>
或者以数组的形式
– [name]<[email]>
– [name]<[email]>
homepage
(略)
Repository
(略)
Issue tracker
(略)
documentation
(略)
dependencies
依赖的来源,在每个包对象(YAML对象)的属性中定义:
- sdk
- hosted package
- git
- path
每个被声明的依赖package,其实是YAML数据结构中的对象。
换成json形式来看:
{
...
dependencies: {
"pkg-A":{"sdk":"flutter", "version":"x.x.x"},
"pkg-B":{"hosted":{"name":"xxx", "url":"xxxxxxxx"}, "version":"x.x.x"},
"pkg-C":{"git":"git://xxxxxxx/xxxxx/xxx.git"},
"pkg-D":{"path":"/xxx/xx/xxx"},
}
...
}
依赖的版本号
任意版本号写法 any
,一般不推荐使用
确定的版本号写法1.2.3
范围写法>=1.0.0 <2.0.0
,还可以使用caret语法
规则,^1.0.0
,因为遵从了版本语法规范
,1.0.0的三个数字分别叫MAJOR
,MINOR
,PATCH
, 根据规则,MAJOR version when you make incompatible API changes
, 只要MAJOR一致,各版本的API都会兼容,反之则不确定。所以用^
表示MAJOR位置的数字不变,其他位置随意,可以保证依赖的可靠。
注意啊,caret语法
是 dart 1.8.3 才开始引入的
Pub还支持dev_dependencies 和 dependency_overrides。
dev就不多说了,较容易理解。
override,是可以声明临时覆盖上述的同名依赖。一般在针对自定义package的调试,或升级某个package版本时候做兼容性调试可以用,比较方便。
Executables
所开发的的library有提供CLI可用的脚本功能,可以在这里声明要暴露的命令名称。
具体查看pub global
public_to
顾名思义,发版到仓库,默认是https://pub.dartlang.org
,声明none
可以禁止发布,避免错误发版。
SDK constraints
声明针对dart SDK 和 Flutter SDK相关的值
dart SDK 的版本号 是不能使用caret语法
,因为这个引用不是使用dart本身解析的,所以并没有这个语法。
当dart 1.19.0,开始,支持指定flutter的版本。