2013-12-22 156 views
1

我剛纔讀Dart's suggested packagout layout spec,並有關於這幾個問題:飛鏢封裝佈局

  1. 的規範說我應該把所有的第三方包到lib目錄。但運行pub getpub upgrade會將這些軟件包提取到packages目錄中。那是哪個?!?我應該運行pub get,將包下拉到packages,然後手動將它們複製到lib?這似乎效率低下!
  2. 的規範說包應該是API的一部分,應該在lib去,但內部包(而不是API的一部分)應lib/src去。所以,如果我的項目依賴於一些第三方軟件包叫做transmogrify,我怎麼知道哪些transmogrify包的公共API的一部分,並應置於lib,哪些是「私有」,並應置於lib/src?這似乎很乏味!
  3. Dart應用程序可以有2個以上的方法嗎?main()方法?爲什麼/爲什麼不?
  4. 只是想,下面的文件應該檢入到VCS確認:
    • packages/**
    • build/**(由pub build生產)
    • pubspec.lock
    • 任何其他方面?

提前感謝!

回答

2
  1. 運行pub-get時,它會將所有必需的軟件包提取到您的軟件包目錄中。保持結構不變。
  2. 我的建議是在Dart Editor中打開pubspec.yaml文件時使用可在「添加包」中找到的包名稱。
  3. 編號main()是程序入口點。所以一個程序,一個入口。
  4. 這幾乎是你列出的。添加一個:.buildlog。
2

1)你不把第三方包到lib目錄下。

如果你想建立一個可重用的庫包你把構建庫在lib目錄中的文件。

第三方包僅在文件中的dependenciesdev_dependencies部分中引用。其餘由pub維護。

2)應該部分回答1)。 你把你的庫包的公共表面放到lib中。不應公開API的庫內部可以/應該進入lib子目錄。

3)我想這取決於你如何指定飛鏢應用程序。 Dart包當然可以有幾個主要功能。您不能在每個都有主目錄的Web目錄中擁有更多的入口頁面。

您可以在垃圾桶,測試,例如更多的飛鏢腳本文件,其中每個人都可以有一個主。

您可以通過在瀏覽器中打開一個條目頁面或運行一個腳本文件,dart myscript.dart啓動應用程序,所以這種明確劃定了被調用。

4)

  • 做包不檢查/
  • 檢查在建/
  • 支票pubspec.lock的應用程序包
  • 做pubspec.lock不檢查庫包 人所以看看這個問題In Dart and Pub, should I add pubspec.lock to my .gitignore?
  • 我有幾個的.gitignore,但他們似乎並沒有(至少不被pub *
    • 再被用來部署
    • _from_packages

我不知爲什麼,你是混合了庫和包的概念的印象。只是爲了澄清:你可以在包中有多個庫。如果要使用它們,您可以(或必須)單獨導入包的各個庫。

+0

感謝@zoechi(+1) - 所以,如果我理解正確的話,那麼如果我的飛鏢應用程序是不會產生任何可重用的庫的話,我甚至不需要一個'lib'目錄,是嗎? – IAmYourFaja

+0

@TicketMonster –

+0

即使在應用程序中,我傾向於將大部分dart代碼放在lib文件夾中。您可以使用以下內容導入它:import'package:my_project_name/my_library.dart';更新lib文件夾中的文件時,不需要運行pub。 –