Libraries是能夠輕鬆建立共享模塊化代碼的好方法。在Dart生態系統中,Libraries是做爲包建立和分發的。Dart有兩種包:應用程序包、本地庫和Libraries包;html
以下爲最簡單的Lib的佈局:git
root dir
- lib
-file.dart
- pubspec.yaml
複製代碼
一個Lib的最低要求是:github
pubspec.yaml:bash
Lib的pubspec.yaml
文件與應用程序的包的文件相同。沒有特殊的名稱來指定軟件包是Lib。markdown
lib文件夾:模塊化
Lib的代碼位於lib目錄下,而且對其餘包是公共的。按照慣例實現的代碼都在lib/src下。lib/src下的代碼被認爲是私有的;其餘軟件包永遠不須要導入src/...,要使lib/src下的API公開,你能夠在lib的文件中導出lib/src下的文件。工具
注:注意:若是未指定library,則會根據每一個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'
複製代碼
導入庫文件時,可使用package:指令指定該文件的URI:
import 'package:utilities/utilities.dart';
複製代碼
可使用dartdoc工具來爲Lib生成API文檔。
若是lib是開源的,能夠在Pub網站上共享它。 要發佈或更新庫,使用pub publish,它會上傳您的包並建立或更新其頁面。pub網站不只託管您的包,還生成並託管您的包的API參考文檔。
注:要發佈到Pub站點之外的地方,或者爲了防止在任何地方發佈,請使用pubspec中定義的publish_to字段。
發佈Lib時,遵循pubspec格式和包結構很重要。其中一些是必需的,以便其餘人可以使用你的包。 其餘建議是幫助用戶更容易理解和使用您的包。
在這兩種狀況下,pub都會嘗試經過指出哪些更改有助於使你的程序包在Dart生態系統中發揮更好的做用。 上傳包時還有一些其餘要求:
請注意,與您的Google賬戶關聯的電子郵件地址會與上傳的任何軟件包一塊兒顯示在Pub網站上。
Pub使用幾個文件的內容在/packages/<your_package>中爲您的包建立一個頁面。 如下是影響包的頁面外觀的文件:
第一次發佈時可使用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
複製代碼