pubspec应该在哪里以及多个应用程序有多少

时间:2013-04-19 22:10:22

标签: dart

假设需要一个包含3个库和2个应用程序的项目。从pub文档中我选择了如下所示的结构。但是,应用程序的不同之处在于,他们希望自己拥有自己的目录。 (http://pub.dartlang.org/doc/#adding-a-dependency)处的文档说明将 pubspec.yaml 文件放在顶级中。 项目文件夹下方的上下文中是顶级吗?

如果有一个pubspec并且它位于 / project 级别并与lib共享,那么这不意味着任何lib的用户而不是应用程序会不必要地需要额外的包(比如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以及将在何处创建以满足这些依赖关系。

1 个答案:

答案 0 :(得分: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个应用程序包和一个库包。

一些注意事项:

  • 您可以使用path dependencies

  • 参考mechanics包裹
  • 如果您希望将整个项目捆绑在一起(例如,如果您正在销售它),那么您真的希望project/成为最高级别。如果您预期app1app2分开居住,根本不需要project/

  • 如果你觉得他们能够分开居住,你可以完全自己制作l1l2l3。在这种情况下,只需将它们全部打包即可。

另见: