1

我刚刚阅读了Dart 建议的 packagout 布局规范,并对此有一些疑问:

  1. 规范说我应该将所有 3rd 方包放入一个lib目录中。但是运行pub getorpub upgrade会将这些包获取到一个packages目录中。那是哪个?!?我应该运行pub get,将包拉入packages,然后手动将它们复制到lib吗?这似乎效率低下!
  2. 规范说应该是 API 一部分的包应该进入lib,但内部包(不是 API 的一部分)应该进入lib/src。因此,如果我的项目依赖于某个名为 3rd 的包transmogrify,我如何知道哪些transmogrify包是公共 API 的一部分并且应该放置在lib其中,哪些是“私有”并且应该放置在其中lib/src?这似乎很乏味!
  3. Dart 应用程序可以有 2种以上的main()方法吗?为什么/为什么不?
  4. 只想确认不应将以下文件入 VCS:
    • packages/**
    • build/**(制作者pub build
    • pubspec.lock
    • 还有其他人吗?
4

2 回答 2

2
  1. 当你运行 pub-get 时,它会将所有需要的包拉到你的包目录中。保持结构不变。
  2. 我的建议是在 Dart 编辑器中打开 pubspec.yaml 文件时使用可以在“添加包”中找到的包名称。
  3. 不,main() 是程序入口点。所以一个程序,一个条目。
  4. 这几乎就是你列出的。添加一个:.buildlog。
于 2013-12-22T12:13:09.403 回答
2

1)您不要将第 3 方包放入 lib 目录。

如果要构建可重用的库包,请将构建库的文件放在 lib 目录中。

dependencies文件中的ordev_dependencies部分仅引用了 3rd 方包pubspec.yaml。其余的由 维护pub

2) 应部分由 1) 回答。您将库包的公共表面放入 lib。不应作为公共 API 公开的库内部可以/应该进入 lib 子目录。

3)我认为这取决于您如何指定 Dart 应用程序。Dart 包当然可以有几个主要功能。在每个都有一个主目录的 Web 目录中不能有更多的入口页面。

您可以在 bin、test、example 中拥有更多 Dart 脚本文件,其中每个文件都可以有一个 main。

您可以通过在浏览器中打开一个入口页面或运行一个脚本文件来启动应用程序,dart myscript.dart因此这清楚地定义了调用的内容。

4)

不知何故,我觉得您混淆了库和包的概念。澄清一下:你可以在包内拥有多个库。如果您想使用它们,您可以(或必须)单独导入包的各个库。

于 2013-12-22T12:22:40.220 回答