4

現在、相対パスでパッケージからコンポーネントをインポートしています。

<link rel="components" href="packages/packageA/components/login.html">

ただし、パッケージのネストを開始すると、これは適切に機能しなくなります。ここにある小さな例をセットアップしました: https://github.com/nikgraf/nesting-components

パッケージ アプリをビルドしようとすると、次のエラー メッセージが表示されます。

error web/packages/packageA/components/login.html:6:5: exception while reading file         "web/packages/packageA/components/packages/packageB/components/button.html", original message:
 FileIOException: Cannot open file 'web/packages/packageA/components/packages/packageB/components/button.html' (OS      Error: No such file or directory, errno = 2)
    <link rel="components" href="packages/packageB/components/button.html">
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning web/packages/packageA/components/login.html:12:7: custom element with tag name button not found.
      <div is="button"></div>
      ^^^^^^^^^^^^^^^^^     

現在の構造:

アプリ - 依存関係: PackageA

PackageA - 依存関係: PackageB

役立つ背景情報: 私のアプリケーションには、ビルドするいくつかの Dart アプリで使用されるパッケージ A の x-login コンポーネントが含まれています。x-login コンポーネントと一般的にパッケージ A には、アプリケーション用の特定のコードが含まれています。x-login は、パッケージ B にある x-button コンポーネントを使用できる必要があります。パッケージ B は、公開する汎用コンポーネントを含むパッケージです。

アプリケーションを別の方法で構造化する方法や、より良い方法でコンポーネントをインポートする方法について何かアドバイスはありますか?

4

1 に答える 1

3

ユーティリティ コンポーネントとドメイン固有のコンポーネントに個別のパッケージを用意することは、良い考えのようです。

できることは、相対パスを使用せずにコンポーネントを含めるときに「package:packageA」スタイルの構文を使用することです。

<link rel="import" href="package:packageA/components/login.html">

pubspec が packageA の場所を知っている限り、問題はありません。これは、パッケージの依存関係へのパスを git または pub url に変更しても機能することを意味します。

パブリッシュ パッケージ マネージャーの依存関係のドキュメント。

于 2013-04-28T09:46:34.993 に答える