Libraries是可以輕鬆建立共享模組化程式碼的好方法。在Dart生態系統中,Libraries是作為包建立和分發的。Dart有兩種包:應用程式包、本地庫和Libraries包;
如下為最簡單的Lib的佈局:
root dir
- lib
-file.dart
- pubspec.yaml
複製程式碼
一個Lib的最低要求是:
-
pubspec.yaml:
Lib的
pubspec.yaml
檔案與應用程式的包的檔案相同。沒有特殊的名稱來指定軟體包是Lib。 -
lib資料夾:
Lib的程式碼位於lib目錄下,並且對其他包是公共的。按照慣例實現的程式碼都在lib/src下。lib/src下的程式碼被認為是私有的;其他軟體包永遠不需要匯入src/...,要使lib/src下的API公開,你可以在lib的檔案中匯出lib/src下的檔案。
注:注意:如果未指定library,則會根據每個lib的路徑和檔名生成唯一標記。 因此,除非計劃生成庫級文件,否則應該從程式碼中省略庫指令。
組織一個Dart Lib
當建立小的單個Lib時,庫包最容易維護、擴充套件和測試。在大多數情況下,每個類都應該在各自的Lib中,除非有兩個類耦合的情況。
注:part指令允許將庫拆分為多個Dart檔案,應該避免使用該指令。
直接在lib/.dart下建立一個Lib檔案,它匯出所有公共的API。這允許使用者通過匯入單個檔案來獲取庫的所有功能。
Lib目錄還可能包含其他可匯入的非src庫。例如,主庫可能跨平臺工作,但你建立依賴dart的Lib:io
或dart:html
。
root dir
- example
- example_server.dart
- lib
- src
-body.dart
-utils.dart
- shelf.dart
- shelf_io.dart
- test
- test.dart
- tool
- travis.sh
複製程式碼
在lib目錄下,主庫檔案shelf.dart從lib/src中匯出檔案
export 'src/utils.dart'
export 'src/body.dart'
複製程式碼
匯入Lib並使用;
匯入庫檔案時,可以使用package:指令指定該檔案的URI:
import 'package:utilities/utilities.dart';
複製程式碼
生成文件;
可以使用dartdoc工具來為Lib生成API文件。
釋出開源庫
如果lib是開源的,可以在Pub網站上共享它。 要釋出或更新庫,使用pub publish,它會上傳您的包並建立或更新其頁面。pub網站不僅託管您的包,還生成並託管您的包的API參考文件。
注:要釋出到Pub站點以外的地方,或者為了防止在任何地方釋出,請使用pubspec中定義的publish_to欄位。
準備釋出
釋出Lib時,遵循pubspec格式和包結構很重要。其中一些是必需的,以便其他人能夠使用你的包。 其他建議是幫助使用者更容易理解和使用您的包。
在這兩種情況下,pub都會嘗試通過指出哪些更改有助於使你的程式包在Dart生態系統中發揮更好的作用。 上傳包時還有一些其他要求:
- 你必須包含包含開源許可證的許可證檔案(名為LICENSE,COPYING或某些變體)。推薦使用Dart本身使用的BSD許可證,還必須擁有合法權利重新分發上傳的任何內容。
- gzip壓縮後,您的包必須小於10MB。如果它太大,請考慮將其拆分為多個包,或減少包含的資源或示例的數量。
- 你的包應該只有託管依賴項。Git依賴是允許的,但強烈反對;並非所有使用Dart的人都安裝了Git,並且Git依賴項不支援版本解析以及託管依賴項。
請注意,與您的Google帳戶關聯的電子郵件地址會與上傳的任何軟體包一起顯示在Pub網站上。
幾個重要檔案
Pub使用幾個檔案的內容在/packages/<your_package>中為您的包建立一個頁面。 以下是影響包的頁面外觀的檔案:
- 自述檔案:自述檔案(README,README.md,README.mdown,README.markdown)是軟體包頁面中的主要內容。
- CHANGELOG:你的軟體包的CHANGELOG(CHANGELOG,CHANGELOG.md,CHANGELOG.mdown,CHANGELOG.markdown)如果找到,也會出現在軟體包頁面的標籤中,以便開發人員可以直接從Pub網站上閱讀。
- pubspec:你的軟體包的pubspec.yaml檔案用於在軟體包頁面的右側填寫有關軟體包的詳細資訊,如描述,作者等。
釋出檔案
第一次釋出時可以使用dart run
pub publish --dry-run
複製程式碼
Pub將檢查以確保你的包是否遵循pubspec格式和包結構佈局約束,然後將包上傳到Pub站點。 Pub還會顯示它打算髮布的所有檔案。 以下是釋出名為transmogrify的包的示例:
Publishing transmogrify 1.0.0
.gitignore
CHANGELOG.md
README.md
lib
transmogrify.dart
src
transmogrifier.dart
transmogrification.dart
pubspec.yaml
test
transmogrify_test.dart
Package has 0 warnings.
複製程式碼
當準備釋出包時,刪除--day-run引數:
pub pushlish
複製程式碼
當包成功上傳到Pub站點後,任何pub使用者都可以在他們的專案中下載或依賴它。 例如,如果剛剛釋出了transmogrify軟體包的1.0.0版本,那麼另一個Dart開發人員可以將其新增為pubspec.yaml中的依賴項:
dependencies:
transmogrify: ^1.0.0
複製程式碼