src_lint 1.0.0
src_lint: ^1.0.0 copied to clipboard
A custom lint that prevents imports from unrelated src directories.
src_lint #
This lint prevents imports from src
directories of unrelated file hierarchies.
Basically, the same as the built-in implementation_imports lint, but for src
imports within the same package.
So, given this project structure:
π lib
βββ π app.dart
βββ π auth
β βββ π auth_page.dart
β βββ π src
β βββ π sign_in_section.dart
βββ π home
βββ π home_page.dart
βββ π src
βββ π social_tab
β βββ π social_tab.dart
β βββ π src
β βββ π posts_list.dart
βββ π settings_tab
βββ π settings_tab.dart
βββ π src
βββ π privacy_section.dart
BAD:
// π app.dart
import 'auth/src/sign_in_section.dart';
import 'package:app/auth/src/sign_in_section.dart';
import 'home/src/social_tab/social_tab.dart';
import 'package:app/home/src/social_tab/social_tab.dart';
import 'home/src/social_tab/src/posts_list.dart';
import 'package:app/home/src/social_tab/src/posts_list.dart';
import 'home/src/settings_tab/settings_tab.dart';
import 'package:app/home/src/settings_tab/settings_tab.dart';
import 'home/src/settings_tab/src/privacy_section.dart';
import 'package:app/home/src/settings_tab/src/privacy_section.dart';
BAD:
// π social_tab.dart
import '../settings_tab/src/privacy_section.dart';
import 'package:app/home/src/settings_tab/src/privacy_section.dart';
import '../../../../auth/src/sign_in_section.dart';
import 'package:app/auth/src/sign_in_section.dart';
GOOD:
// π app.dart
import 'auth/auth_page.dart';
import 'package:app/auth/auth_page.dart';
import 'home/home_page.dart';
import 'package:app/home/home_page.dart';
GOOD:
// π home_page.dart
import 'src/social_tab/social_tab.dart';
import 'package:app/home/src/social_tab/social_tab.dart';
import 'src/settings_tab/settings_tab.dart';
import 'package:app/home/src/settings_tab/settings_tab.dart';
GOOD:
// π social_tab.dart
import 'src/posts_list.dart';
import 'package:app/home/src/social_tab/src/posts_list.dart';
Installation #
Add src_lint
and custom_lint
to your pubspec.yaml
flutter pub add --dev src_lint
flutter pub add --dev custom_lint
Update the analysis_options.yaml
to include
analyzer:
plugins:
- custom_lint
Credits #
This package is inspired by subpackage_lint and solves the same problem, but with less ceremony required.