src_lint 1.0.0 copy "src_lint: ^1.0.0" to clipboard
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.

4
likes
120
points
5
downloads

Publisher

verified publishersonerik.dev

Weekly Downloads

A custom lint that prevents imports from unrelated src directories.

Repository (GitHub)
View/report issues

Topics

#lint #structure #protected #visibility

Documentation

API reference

License

MIT (license)

Dependencies

analyzer, custom_lint_builder, path

More

Packages that depend on src_lint