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

时间:2018-12-17 16:09:00

标签: file dart package conventions dart-pub

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

2 个答案:

答案 0 :(得分:4)

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

  • 在同一软件包中访问其他顶级目录,例如bin/web/example/test/tool/,...
  • 与其他具有此软件包相关性的软件包。

lib/src按照惯例包含lib/lib/xxx公开的公共API的私有实现,其中xxx不是src

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

pubspec.yaml中,您可以定义可执行文件https://www.dartlang.org/tools/pub/pubspec#executables,该可执行文件允许您通过执行bin/来执行foo(使用{{ 1}})。

答案 1 :(得分:2)

请参见Pub Package Layout Conventions - Implementation files

  

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

     

您可以从同一个程序包中的其他Dart代码中导入lib/src中的库(例如lib中的其他库,bin中的脚本和测试),但是您可以永远不要从另一个包的lib/src目录导入。这些文件不是软件包公共API的一部分,并且可能会以破坏代码的方式进行更改。

     

当您从自己的程序包中使用库时,甚至src中的代码,也可以(并且应该)仍然使用package:来导入它们。