我刚刚阅读Dart's suggested packagout layout spec并对此提出了一些问题:
lib
目录。但是,运行pub get
或pub upgrade
会将这些包提取到packages
目录中。那是哪个?!?我应该运行pub get
,将包下拉到packages
,然后手动将它们复制到lib
吗?这似乎效率低下!lib
中,但内部软件包(不是API的一部分)应该放在lib/src
中。因此,如果我的项目依赖于名为transmogrify
的第三方软件包,我如何知道哪些transmogrify
软件包是公共API的一部分,应该放在lib
中,哪些是“私人”,应该放在lib/src
?这看起来很乏味!main()
个方法吗?为什么/为什么不呢?packages/**
build/**
(由pub build
生成)pubspec.lock
答案 0 :(得分:2)
答案 1 :(得分:2)
1)您没有将第三方软件包放入lib目录。
如果要构建可重用的库包,请将构建库的文件放在lib目录中。
第三方软件包仅在dependencies
文件的dev_dependencies
或pubspec.yaml
部分中引用。其余部分由pub
维护。
2)应该部分回答1)。 您将库包的公共表面放入lib中。不应作为公共API公开的库内部可以/应该进入lib子目录。
3)我认为这取决于您如何指定Dart应用。 Dart包当然可以有几个主要功能。您不能在web目录中有更多的条目页面,每个条目都有一个主页。
你可以在bin,test,example中有更多的Dart脚本文件,其中每个文件都有一个main。
您可以通过在浏览器中打开一个条目页面或运行带有dart myscript.dart
的脚本文件来启动应用程序,这样就可以明确定义所调用的内容。
4)
pub *
)
我不知何故给人的印象是你正在混淆库和包的概念。只是为了澄清:你可以在包装里面放置多个库。如果要使用它们,您可以(或必须)单独导入包的各个库。