一、Dart : 建立併發布Dart Libraries;

  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的路徑和文件名生成惟一標記。 所以,除非計劃生成庫級文檔,不然應該從代碼中省略庫指令。佈局

組織一個Dart Lib

  當建立小的單個Lib時,庫包最容易維護、擴展和測試。在大多數狀況下,每一個類都應該在各自的Lib中,除非有兩個類耦合的狀況。測試

注:part指令容許將庫拆分爲多個Dart文件,應該避免使用該指令。網站

  直接在lib/.dart下建立一個Lib文件,它導出全部公共的API。這容許用戶經過導入單個文件來獲取庫的全部功能。

  Lib目錄還可能包含其餘可導入的非src庫。例如,主庫可能跨平臺工做,但你建立依賴dart的Lib:iodart: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
複製代碼
相關文章
相關標籤/搜索