簡介
pubspec.yaml是所有dart專案的靈魂,它包含了所有dart專案的依賴資訊和其他元資訊,所以pubspec.yaml就是dart專案的meta!
pubspec.yaml支援的欄位
根據dart的定義,pubspec.yaml中可以包含下面的欄位:
欄位名 | 是否必須欄位 | 描述 |
---|---|---|
name | 是 | package的名字 |
version | 如果釋出到pub.dev,則需要 | package的版本號 |
description | 如果釋出到pub.dev,則需要 | package的描述資訊 |
homepage | 否 | package的主頁 |
repository | 否 | package的原始碼地址 |
issue_tracker | 否 | package問題跟蹤地址 |
documentation | 否 | package的文件資訊 |
dependencies | 否 | package的依賴資訊 |
dev_dependencies | 否 | pacakge的dev依賴資訊 |
dependency_overrides | 否 | 想要覆蓋的package |
environment | dart2需要 | |
executables | 否 | package的可執行檔案路徑 |
publish_to | 否 | package將如何釋出 |
注意,以上是dart中pubspec.yaml支援的欄位,如果是在flutter環境中,則會有些額外支援的欄位。
# 一個例子
我們看一個具體的例子:
name: my_app
version: 11.15
description: >-
this is a new app
homepage: http://www.flydean.com
documentation: http://www.flydean.com
environment:
sdk: '>=2.10.0 <3.0.0'
dependencies:
efts: ^2.0.4
transmogrify: ^0.4.0
dev_dependencies:
test: '>=1.15.0 <2.0.0'
欄位詳情
下面來看下各個欄位的詳情和限制情況:
- Name
name表示的是包的名字,name必須是全小寫,如果有多個詞的話,可以用下劃線來區分,如:my_app.
並且只能使用小寫字母和數字的組合,同時不能以數字開頭,並且不要使用dart中的保留字。
- Version
Version表示的是版本號,版本號是由點分割的三個數字,如:11.15.0. 後面還可以跟上build版本號:+1, +2, +hotfix.oopsie, 或者預釋出版本等:-dev.4, -alpha.12, -beta.7, -rc.5.
- Description
package的描述資訊最好使用英文來描寫,長度是60 到180個字元,表示這個包的作用。
- Dependencies
有兩種依賴資訊,一種是所有使用到這個packages的人都需要用到的依賴,這種依賴放在dependencies中。
還有一種是隻用在當前pacakge開發中的包,這種依賴放在dev_dependencies中。
在某些情況下,我們有可能需要覆蓋某些依賴包,則可以放在:dependency_overrides中。
- Executables
有些pacakges提供的是工具供大家使用,這些工具有可能是命令列工具,所以需要在executables中指定可以執行的命令的路徑。
比如下面的配置:
executables:
slidy: main
fvm:
那麼在執行pub global activate之後,就可以在全域性執行slidy來執行bin/main.dart, 和fvm來執行binfvm.dart.
- environment
因為Dart是一門新的語言,所以目前來說其變動還是挺大的。所以有些應用可以依賴於不同的dart版本,這時候就需要用到environment:
environment:
sdk: '>=2.10.0 <3.0.0'
上面的程式碼中,我們指定了dart sdk的版本範圍。
從dart1.19之後,environment:中還支援指定flutter的版本:
environment:
sdk: '>=1.19.0 <3.0.0'
flutter: ^0.1.2
總結
以上就是dart的元世界pubspec.yaml詳解。
本文已收錄於 http://www.flydean.com/10-dart-pubspec/
最通俗的解讀,最深刻的乾貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!
歡迎關注我的公眾號:「程式那些事」,懂技術,更懂你!