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

一些可能有帮助的背景信息:我的应用程序包含包 A 中的 x-login 组件,我们构建的几个 Dart 应用程序使用该组件。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 回答