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
27
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