참조하는 패키지에 의존성 선언하기

참조하는 패키지에 의존성 선언하기

가져다 쓰는 패키지를 pubspec.yaml에 의존성으로 적어 두지 않았을 때 analyzer가 알려 주는, 린트 규칙 기반의 진단이에요. 의존성을 명시적으로 선언하는 습관이 왜 중요한지 살펴볼게요.

출처: depend_on_referenced_packages

본문

패키지 import가 pubspec.yaml 파일에 지정되지 않은 패키지를 가리키고 있으면 analyzer가 이 진단을 만들어 내요.

참조하는 패키지에 명시적으로 의존하면 그 패키지가 항상 존재한다는 걸 보장할 수 있고, 버전 충돌로부터 지키기 위해 그 패키지에 의존성 제약(dependency constraint)도 걸 수 있어요.

예시

다음 내용을 담은 pubspec.yaml 파일이 있다고 해 볼게요.

dependencies:
  meta: ^3.0.0

다음 코드는 패키지 a에 대한 의존성이 없음에도 불구하고 import를 하고 있어서 이 진단을 만들어 내요.

import 'package:a/a.dart';

흔한 해결책

일반 의존성(regular dependency)으로 둘지 개발 의존성(dev dependency)으로 둘지는, 그 패키지가 공개 라이브러리(public library, lib이나 bin 아래)에서 참조되는지, 아니면 비공개 라이브러리(예: test 아래)에서만 참조되는지에 따라 달라져요.

패키지가 공개 라이브러리 중 하나 이상에서 참조된다면, pubspec.yamldependencies 필드 아래에 그 패키지에 대한 일반 의존성을 추가하면 돼요.

dependencies:
  a: ^1.0.0
  meta: ^3.0.0

패키지가 비공개 라이브러리에서만 참조된다면, pubspec.yamldev_dependencies 필드 아래에 그 패키지에 대한 개발 의존성을 추가하면 돼요.

dependencies:
  meta: ^3.0.0
dev_dependencies:
  a: ^1.0.0

더 알아보기

  • Diagnostics — Dart analyzer가 만들어 내는 다른 진단들.