4

假设需要一个包含 3 个库和 2 个应用程序的项目。从 pub 文档中,我选择了如下结构。但是,这些应用程序已经足够不同了,它们最好有自己的目录。( http://pub.dartlang.org/doc/#adding-a-dependency ) 的文档说将pubspec.yaml文件放在顶层项目文件夹下的上下文中的顶层是什么?

如果有一个 pubspec 并且它位于/project级别并与库共享,那是否意味着任何库的用户而不是应用程序的用户将不必要地需要额外的包(如 good_stuff 和 big_stuff)?

/project
    /app
        /app1    (uses l1, package:good_stuff)
        /app2    (uses l1, l2, l3, package:big_stuff)
    /lib
        /l1
        /l2      (uses package:pathos/path.dart)
        /l3      (uses l1 and l2)
        /src
            /l1
            /l2
            /l3

因此,给定这个所需的设置,将创建多少个 pubspec 以及在哪里来满足这些依赖关系。

4

1 回答 1

5

套餐

你应该把你的文件放在你的pubspec.yaml的顶层。在 Pub 中,包是最大的自包含代码单元,它包含包独立运行所需的所有库、可执行文件、示例、文档、测试和工具。

在 Pub 中,大致有两种类型的包:

  • 库包,实际上只是传统意义上的库,旨在供其他包使用。
  • 应用程序包是其他包的消费者,它定义了一个可以在命令行、服务器、Web 或其他地方运行的应用程序。

这些是松散的定义,因为库包可能有可执行文件,而应用程序包可能有一些在其他应用程序中有用的可重用库。

通常,您希望尝试用几个分立的组件制作您的项目,这些组件可以单独更改和重复使用。这与为应用程序的所有部分制作一个包形成对比。

您的项目

我建议你有以下结构:

/project
  /app1
    - pubspec.yaml
  /app2
    - pubspec.yaml
  /mechanics
    - pubspec.yaml
    /lib
      l1.dart
      l2.dart
      l3.dart
      /src
        ...

在这里,您将拥有 2 个应用程序包和一个库包。

几点注意事项:

  • 您可以参考mechanics具有路径依赖关系的包

  • 如果您希望将整个项目捆绑在一起(例如,如果您要出售它),那么您只会真正想要project/作为最高级别。如果您预计app1app2分开生活,则根本不需要project/

  • 如果您觉得他们可以分开生活得足够好,您完全可以制作l1,l2和他们自己的包。l3在这种情况下,只需将它们全部制作为自己的包装。

也可以看看:

于 2013-04-20T00:10:19.067 回答