layerlens 1.0.17 layerlens: ^1.0.17 copied to clipboard
Generate a dependency diagram in every folder of your source code.
LayerLens #
Generate dependency diagram in every folder of your Dart or Flutter
package as Mermaid flowchart
documents.
NOTE: LayerLens shows inside-package dependencies. For cross-package dependencies use flutter pub deps
.
Configure layerlens #
Configure command globally #
-
Run
dart pub global activate layerlens
-
Verify you can run
layerlens
. If you getcommand not found
, make sure your path contains pub cache.
Configure command for a package #
-
Add
layerlens: <version>
to the sectiondev_dependencies
in the package's pubspec.yaml. -
Run
dart pub get
orflutter pub get
for the package.
Configure IDE #
To see the diagrams in your IDE:
-
VSCode: install
Markdown Preview Mermaid Support
extension -
Android Studio: enable the "Mermaid" extension in the Markdown language settings
Generate diagrams #
- Run command:
-
With global configuration:
layerlens --path <your package root>
-
With package configuration:
dart run layerlens
in the package root
-
Find the generated file DEPENDENCIES.md in each source folder, where libraries or folders depend on each other.
-
In VSCode, right click DEPENDENCIES.md and select 'Open Preview'
CI: re-generate on every GitHub push #
- Add a
dev_dependency
to https://pub.dev/packages/layerlens - Copy the content of run-layerlens.yaml
to
.github/workflows
.
Alert on circular references #
You may want to avoid circular references, because without circles:
- Code is easier to maintain
- Chance of memory leaks is smaller
- Treeshaking (i.e. not including non-used code into build) is more efficient
- Incremental build is faster
LayerLens marks inverted dependencies (dependencies that create circles) with '!'.
Also you can add command dart run layerlens --fail-on-cycles
to the repo's pre-submit bots.
Build filters #
If you want to generate the DEPENDENCIES.md
only for a specific folders, you can use --build-filter
option and you should use glob syntax. For example, to generate the diagram only for the root lib/
folder, you run following dart run layerlens --build-filter "lib"
.
You can specify multiple build filters . The mechanism is inspired by --build-filter
in Dart's build_runner
. For example, to run the layerlens for root lib/
and it's subfolder lib/subfolder1
run layerlens --build-filter "lib" --build-filter "lib/subfolder1"
. To generate the entire subtree for a given subfolder you can run following: layerlens --build-filter "lib/subfolder1" --build-filter "lib/subfolder1/**"
Supported languages #
While layerlens concepts are language agnostic, for now only dart
is supported.
Please submit an issue, if you want other language to be added.
Contribute to layerlens #
See CONTRIBUTING.md
for details.
License #
Apache 2.0; see LICENSE
for details.
Disclaimer #
This project is not an official Google project. It is not supported by Google and Google specifically disclaims all warranties as to its quality, merchantability, or fitness for a particular purpose.