dart中的lib / src和/ bin有什么区别?

Shu*_*oni 2 file conventions package dart dart-pub

我知道lib /是存放所有库文件的位置,/ bin是存放命令行应用程序入口点的位置。我知道它们都是公共lib /和bin,但我无法理解使用lib / src的约定,根据官方文档,该约定应包含:实现代码

Ale*_*uin 6

请参阅发布包布局约定 - 实现文件

里面的库lib是公开可见的:其他包可以自由导入它们。但是包的大部分代码是内部实现库,只能由包本身导入和使用。那些进入libcalled的子目录src。如果它可以帮助您组织事物,您可以在其中创建子目录。

你可以自由地lib/src从同一个包中的其他 Dart 代码中导入库(如 中的其他库lib、脚本中的其他库bin和测试),但你永远不应该从另一个包的lib/src目录中导入。这些文件不是包的公共 API 的一部分,它们的更改方式可能会破坏您的代码。

当您将自己的包,甚至在代码中使用库从src,你可以(也应该)仍然使用package:导入它们。


Gün*_*uer 5

lib/是包含可共享代码的目录。可以共享

  • 对于其他顶级目录一样bin/web/example/test/tool/,...在同一个包
  • 到其他依赖于此软件包的软件包。

lib/src按照惯例包含由公开的私有API的私有实现lib/lib/xxxxxx没有公开的地方src

bin为命令行应用程序保留,并包含执行它们的Dart入口点脚本(包含的文件main() {...})。

pubspec.yaml您可以定义可执行https://www.dartlang.org/tools/pub/pubspec#executables,允许你从运行脚本bin/的只是执行foo已经dart somePath/bin/foo.dart(使用执行pub global activate my_package_with_foo)。