See melos example.
- Application packages (packages compiled for devices) are scaffolded in the
apps
directory. Library packages (packages shared or consumed by application packages) are scaffolded in thepackages
directory.
example:
root
│ .gitignore
│ [...]
└───apps
│ └───app_a
│ │ └───[...]
│ └───app_b
│ └───[...]
└───packages
└───app_core
│ └───[...]
└───auth_service
└───[...]
- Shared (library) packages require a directory in
packages
, apubspec.yaml
, and a same-named barrel file inlib
. Private files are placed inlib/src
by convention (errors are shown when any consumer imports fromsrc
directly).
example:
packages
└───app_core
│ pubspec.yaml
│ [...]
└───lib
│ app_core.dart
│ [...]
└───src
└───[...]
- In library packages
pubspec.lock
should be ignored (per https://dart.dev/tools/pub/glossary#library-package). - Packages which consume library packages use a relative path (instead of version name) within
pubspec.yaml
.
apps/app_a/pubspec.yaml
:
dependencies:
app_core:
path: ../packages/app_core
packages/http_album_repository/pubspec.yaml
:
dependencies:
app_core:
path: ../app_core