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

use*_*952 4 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
Run Code Online (Sandbox Code Playgroud)

因此,给定这个期望的设置,将创建多少pubspec以及将在何处创建以满足这些依赖性.

Jun*_*ont 5

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

在Pub中,有两种类型的软件包:

  • 库包实际上只是传统意义上的库,并且旨在供其他包使用.
  • 应用程序包是其他程序包的使用者,并定义可以在命令行,服务器,Web或其他位置运行的应用程序.

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

通常,您希望尝试使用多个分立组件来创建项目,这些组件可以更改并单独重复使用.这与为应用程序的所有部分制作一个包相反.

你的项目

我建议你有以下结构:

/project
  /app1
    - pubspec.yaml
  /app2
    - pubspec.yaml
  /mechanics
    - pubspec.yaml
    /lib
      l1.dart
      l2.dart
      l3.dart
      /src
        ...
Run Code Online (Sandbox Code Playgroud)

这里有2个应用程序包和一个库包.

几点说明:

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

  • project/如果您期望将整个项目捆绑在一起(比如您是否正在销售它),那么您真的只想要成为顶级顶级.如果您预期app1app2分开居住,您根本不需要project/.

  • 你可以完全制作l1,l2l3他们自己的包,如果你觉得他们可以分开生活.在这种情况下,只需将它们全部打包.

也可以看看: