implementation_imports: 다른 패키지의 구현 파일을 import하지 마세요
implementation_imports: 다른 패키지의 구현 파일을 import하지 마세요
다른 패키지에 있는 구현(implementation) 파일을 import하는 것은 좋지 않아요. 이 린트(lint)인 implementation_imports는 그런 실수를 잡아주는 규칙이에요. 공개 API가 아닌 내부 파일들을 다른 패키지에서 들여오면, 나중에 그 파일들이 바뀌면서 코드가 깨질 수 있어요.
본문
설명
pub 패키지 구조 문서에서 안내하듯이, DON'T — 다른 패키지의 구현 파일을 import하지 마세요.
lib 안에 있는 라이브러리들은 공개되어 있어서 다른 패키지에서 자유롭게 import할 수 있어요. 하지만 패키지 코드의 상당 부분은 패키지 내부에서만 쓰는 내부 구현 라이브러리인데, 이것들은 패키지 자신만 import하고 사용해야 해요. 그런 파일들은 lib의 하위 디렉터리인 src 안에 넣어요. 필요하다면 그 안에 하위 디렉터리를 더 만들어도 돼요.
같은 패키지 안의 다른 Dart 코드(예: lib의 다른 라이브러리, bin의 스크립트, 테스트)에서는 lib/src에 있는 라이브러리를 import해도 괜찮아요. 하지만 다른 패키지의 lib/src 디렉터리는 절대 import하면 안 돼요. 그 파일들은 패키지의 공개 API가 아니며, 여러분의 코드를 깨뜨릴 수도 있는 방식으로 바뀔 수 있기 때문이에요.
나쁜 예:
// In 'road_runner'
import 'package:acme/src/internals.dart';
활성화(Enable)
implementation_imports 규칙을 활성화하려면 analysis_options.yaml 파일의 linter > rules 아래에 implementation_imports를 추가해요.
linter:
rules:
- implementation_imports
대신 YAML 맵 문법으로 린터 규칙을 설정한다면, linter > rules 아래에 implementation_imports: true를 추가해요.
linter:
rules:
implementation_imports: true