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