目前,我通过相对路径从包中导入组件:
<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
程序包A - 依赖:PackageB
一些可能有用的背景信息: 我的应用程序包含来自包A的x-login组件,我们构建的几个Dart应用程序使用它。 x-login组件和通用包A包含我们的应用程序的特定代码。 x-login应该能够使用包B中的x-button组件。包B是一个包含我们想要发布的通用组件的包。
对于以不同方式构建我的应用程序或如何以更好的方式导入组件,您有什么建议吗?
答案 0 :(得分:3)
为您的实用程序组件提供单独的包,然后为特定于域的组件提供一个好主意。
在不包含相对路径的情况下,可以使用“package:packageA”样式语法。
<link rel="import" href="package:packageA/components/login.html">
只要你的pubspec知道packageA在哪里,你应该没问题。这意味着当您将包依赖的路径更改为git或pub url时,它仍然可以工作。