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

Melrose發表於2019-03-12

  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: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
複製程式碼

相關文章