1

Dart が提案する packagout レイアウト仕様を読んだところですが、それに関していくつか質問があります。

  1. 仕様では、すべてのサードパーティのパッケージをlibディレクトリに配置する必要があると書かれています。ただし、pub getorを実行すると、これらのパッケージがディレクトリpub upgradeにフェッチされます。packagesで、どれだ!? を実行pub getし、パッケージを にプルダウンしてpackagesから、手動で にコピーする必要がありlibますか? それは効率が悪いようです!
  2. 仕様では、API の一部である必要があるパッケージは に入れる必要がありますlibが、内部パッケージ (API の一部ではない) は に入れる必要があると述べていますlib/src。私のプロジェクトが と呼ばれるサードパーティのパッケージに依存している場合、パブリック API の一部であり、 に配置する必要があるパッケージと、「プライベート」で に配置する必要があるパッケージtransmogrifyをどのように知ることができますか? これは面倒そうです!transmogrifyliblib/src
  3. Dart アプリに 2 つ以上のmain()メソッドを含めることはできますか? なぜ/なぜしないのですか?
  4. 次のファイルをVCS にチェックインして はならないことを確認したいだけです。
    • packages/**
    • build/**(プロデュースpub build
    • pubspec.lock
    • 他のもの?
4

2 に答える 2

2

1) サードパーティのパッケージを lib ディレクトリに入れません。

再利用可能なライブラリ パッケージをビルドする場合は、ライブラリをビルドするファイルを lib ディレクトリに置きます。

サード パーティのパッケージは、ファイルのdependenciesordev_dependenciesセクションで参照されているだけです。pubspec.yaml残りは によって維持されpubます。

2) は 1) で部分的に回答する必要があります。ライブラリ パッケージのパブリック サーフェスを lib に配置します。パブリック API として公開されるべきではないライブラリ内部は、lib サブディレクトリに移動できる/移動する必要があります。

3) これは、Dart アプリの指定方法に依存すると思います。Dart パッケージは確かにいくつかの主要な機能を持つことができます。それぞれがメインを持つ web ディレクトリに、これ以上エントリ ページを作成することはできません。

bin、test、example にさらに Dart スクリプト ファイルを含めることができます。ここでは、それぞれがメインを持つことができます。

ブラウザでエントリ ページを開くか、スクリプト ファイルを実行してアプリを起動しますdart myscript.dart。これにより、何が呼び出されるかが明確に定義されます。

4)

  • パッケージをチェックインしない/
  • build/ にチェックインない
  • アプリケーション パッケージの pubspec.lock をチェックインします
  • ライブラリ パッケージの pubspec.lock をチェックインしないでくださいこの質問も見てくださいIn Dart and Pub, should I add pubspec.lock to my .gitignore?
  • .gitignore にいくつかありますが、それらはもう使用されていないようです (少なくとも によっては使用されていませんpub *) 。
    • アウト
    • 配備
    • _from_packages

ライブラリとパッケージの概念を混同しているように感じます。明確にするために、パッケージ内に複数のライブラリを含めることができます。それらを使用したい場合は、パッケージの個々のライブラリを個別にインポートできます (またはインポートする必要があります)。

于 2013-12-22T12:22:40.220 に答える
2
  1. pub-get を実行すると、必要なすべてのパッケージがパッケージ ディレクトリにプルされます。構造はそのままにしておきます。
  2. Dart Editor で pubspec.yaml ファイルを開いたときに、[パッケージの追加] にあるパッケージ名を使用することをお勧めします。
  3. いいえ、main() はプログラムのエントリ ポイントです。つまり、1 つのプログラム、1 つのエントリです。
  4. それはあなたがリストしたほとんどです。追加するには: .buildlog.
于 2013-12-22T12:13:09.403 に答える