在dart libs中导入包时的Linter警告

时间:2014-12-31 00:06:23

标签: dart dart-polymer

我正在开发一个大型Dart项目,其中包括一个Web前端以及一些自定义库。我们使用了here所述的推荐文件夹结构。

my_app/
    lib/
        my_library1/
            example/
            lib/
                my_library1.dart
                my_library1.html
            pubspec.yaml
        ...
    web/
    pubspec.yaml

我们的lib文件夹中有几个库,我们都在这个主pubspec.yaml中导入,如下所示:

dependencies:
  my_library1:
    path: lib/my_library1

这一切都运行得很好,但是当我使用pub build生成JS构建时,我收到大量关于如何为每个lib正确导入包的Linter警告。

例如,my_library1 lib在my_library1.html文件中有一个聚合物导入,如下所示:

<link rel="import" href="../../packages/polymer/polymer.html">

对此的警告是:

[Warning from polymer (Linter) on my_app|lib/my_library1/lib/my_library1.html]:
line 1, column 1 of lib\my_library1\lib\my_library1.html: Invalid URL to reach to another package: ../../packages/polymer/polymer.html. Path reaching to other packages must first reach up all the way to the packages directory. For example, try changing the URL to: ../../../../packages/polymer/polymer.html. See http://goo.gl/5HPeuP#code_transformers_2 for details.
<link rel="import" href="../../packages/polymer/polymer.html">
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

现在,如果我将该行更改为他们的建议(../../../../packages/polymer/polymer.html),我会收到此错误:

[Warning from polymer (Linter) on my_library1|lib/my_library1.html]:
line 1, column 1 of lib\my_library1.html: Invalid URL to reach to another package: ../../../../packages/polymer/polymer.html. Path reaching to other packages must first reach up all the way to the packages directory. For example, try changing the URL to: ../../packages/polymer/polymer.html. See http://goo.gl/5HPeuP#code_transformers_2 for details.
<link rel="import" href="../../../../packages/polymer/polymer.html">
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

所以无论我怎么做,都是错的。有趣的是,警告的源文件从my_library1|lib\my_library1.html更改为my_app|lib\my_library1\lib\my_library1.html

这对任何人都有意义吗?

顺便说一句,我一直在各种Dart网站(#1#2#3)上阅读这些内容,但无济于事。

我使用Dart 1.7.2(STABLE)和聚合物0.15.3 + 2

1 个答案:

答案 0 :(得分:2)

您的包不应包含多个pubspec.yaml文件。 lib /文件夹应该只有dart文件和其他资源,例如html,js和css文件。例如,您可以按如下方式组织项目:

 my_app/
     lib/
        my_library1/
            my_library1.dart
            my_library1.html
        ...
     web/
     pubspec.yaml //you do not need to include my_library1 as a dependency here

此外,如果您想在其他包中使用my_library1,则需要将其移至自己的包中:

 my_library1/
     example/
     lib/
         my_library1.dart
         my_library1.html
     pubspec.yaml
 my_app/
     lib/
         ...
     web/
     pubspec.yaml //you need to include my_library1 as a dependency here

在任何一种情况下,my_library1.html都可以使用以下导入:

 <link rel="import" href="../../packages/polymer/polymer.html">