import_guard 0.0.6
import_guard: ^0.0.6 copied to clipboard
An analyzer plugin to guard imports between folders. Enforce clean architecture layer dependencies with configurable deny rules.
import_guard #
An analyzer plugin to guard imports between packages and folders.
Requires Dart 3.10+. For older Dart versions, use import_guard_custom_lint.
Features #
- Define import restrictions per folder using
import_guard.yaml - Glob patterns:
package:my_app/data/**,package:flutter/** - Works with package imports and relative imports
- Hierarchical config inheritance from repo root
- Native IDE integration via
dart analyze/flutter analyze
Installation #
dev_dependencies:
import_guard: ^0.0.1
Enable in analysis_options.yaml:
plugins:
import_guard: ^0.0.1
Usage #
Create import_guard.yaml in any directory to define restrictions for files in that directory.
Example: Clean Architecture #
For a Flutter app named my_app:
my_app/
├── pubspec.yaml # name: my_app
└── lib/
├── domain/
│ ├── import_guard.yaml
│ └── user.dart
├── presentation/
│ └── user_page.dart
└── data/
└── user_repository.dart
# lib/domain/import_guard.yaml
deny:
- package:my_app/presentation/**
- package:my_app/data/**
This prevents domain layer from importing presentation or data layers.
Pattern Types #
| Pattern | Matches |
|---|---|
package:my_app/data/** |
All files under lib/data/ |
package:my_app/data/* |
Direct children of lib/data/ only |
package:flutter/** |
All flutter imports |
dart:mirrors |
Specific dart library |
../data/** |
Relative path patterns |
Recommended: Use package imports #
To simplify configuration, enable always_use_package_imports:
# analysis_options.yaml
linter:
rules:
- always_use_package_imports
Then you only need to write package patterns (no relative path patterns needed).
Running #
dart analyze
# or
flutter analyze
Related Packages #
- import_guard_custom_lint - custom_lint implementation (Dart 3.6+)
License #
MIT