Dart artifacts are not built the same way in Fuchsia as they are on other platforms.
Instead of relying on
pub to manage dependencies, sources of third-party packages we depend on are checked into the tree under [
//third_party/dart-pkg][dart-3p]. This is to ensure we use consistent versions of our dependencies across multiple builds.
Likewise, no build output is placed in the source tree as everything goes under
out/. That includes
.packages files which are generated as part of the build based on a target's dependency.
There are five gn targets for building Dart:
dart_librarydefines a library that can be used by other Dart targets;
dart_appdefines a Dart executable for Fuchsia;
dart_tooldefines a Dart tool for the host;
flutter_appdefines a Flutter application;
dart_testdefines a group of test.
See the definitions of each of these targets for how to use them.
We use a layout very similar to the standard layout.
my_package/ | |-- pubspec.yaml # Empty, used as a marker [mandatory] |-- BUILD.gn # Contains all targets |-- analysis_options.yaml # Analysis configuration [mandatory] |-- lib/ # dart_library contents |-- bin/ # dart_binary's (target) or dart_tool's (host) |-- test/ # dart_test contents