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_library
defines a library that can be used by other Dart targets;dart_app
defines a Dart executable for Fuchsia;dart_tool
defines a Dart tool for the host;flutter_app
defines a Flutter application;dart_test
defines 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