always_use_package_imports 린트 규칙

always_use_package_imports 린트 규칙

lib/에 있는 파일은 상대 임포트 대신 패키지 임포트를 쓰도록 안내하는 린트 규칙이에요. 상대 임포트와 절대 임포트를 섞어 쓰면 같은 멤버를 두 가지 방식으로 임포트하는 혼란이 생길 수 있어요. (Dart 2.10에서 도입)

출처: always_use_package_imports

본문

DO lib/ 안에 있는 파일은 상대 임포트를 피하세요.

상대 임포트와 절대 임포트를 섞어 쓰면 같은 멤버가 서로 다른 두 가지 방식으로 임포트되는 혼란이 생길 수 있어요. 이를 피하는 한 가지 방법은 lib/ 디렉터리 안의 파일에 대해 일관되게 절대 임포트(패키지 임포트)를 쓰는 거예요.

그리고 이 규칙은 prefer_relative_imports와 반대되는 규칙이에요.

avoid_relative_lib_imports를 함께 쓰면 lib/ 디렉터리 외부(예: test/)에서 lib/ 내부 파일을 상대 임포트하는 것도 금지할 수 있어요.

BAD:

import 'baz.dart';

import 'src/bag.dart'

import '../lib/baz.dart';

...

GOOD:

import 'package:foo/bar.dart';

import 'package:foo/baz.dart';

import 'package:foo/src/baz.dart';
...

Incompatible rules

always_use_package_imports 린트 규칙은 다음 규칙과 함께 쓸 수 없어요:

Enable

always_use_package_imports 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 always_use_package_imports를 추가해 주세요:

linter:
  rules:
    - always_use_package_imports

대신 YAML 맵 문법으로 린터 규칙을 설정한다면, linter > rules 아래에 always_use_package_imports: true를 추가하면 돼요:

linter:
  rules:
    always_use_package_imports: true

더 알아보기