dart pub add로 의존성 추가하기

dart pub add로 의존성 추가하기

dart pub add 명령어를 쓰면 pubspec.yaml에 패키지 의존성을 쉽게 추가할 수 있어요. 버전 제약이나 개발 의존성, override 지정 같은 다양한 옵션도 함께 살펴볼게요.

출처: dart pub add

본문

dart pub add는 pub 도구의 명령어 중 하나예요. 이 명령어는 지정한 패키지들을 pubspec.yaml의 의존성으로 추가하고, pubspec.yaml을 해석하기 위해 필요한 의존성을 함께 가져와요.

$ dart pub add [{dev|override}:]<package>[:<descriptor>] [[{dev|override}:]<package>[:<descriptor>] ...] [options]

예를 들어 다음 명령어는 pubspec.yaml을 직접 편집해서 http 패키지를 추가한 다음 dart pub get을 실행하는 것과 같은 효과를 내요.

$ dart pub add http

버전 제약 (Version constraint)

기본적으로 dart pub add는 pub.dev 사이트에서 SDK 제약과 의존성에 호환되는 패키지의 최신 안정 버전을 사용해요. 예를 들어 http 패키지의 최신 안정 버전이 0.13.3이라면, dart pub add http는 pubspec.yaml의 dependencies 아래에 http: ^0.13.3을 추가해요.

버전 제약이나 제약 범위를 직접 지정할 수도 있어요.

$ dart pub add foo:2.0.0
$ dart pub add foo:'^2.0.0'
$ dart pub add foo:'>=2.0.0 <3.0.1'

만약 지정한 패키지가 pubspec.yaml에 이미 존재하는 의존성이라면, dart pub add는 그 의존성의 제약을 명령어에서 지정한 값으로 갱신해요.

개발 의존성 (Dev dependency)

dev: 접두사를 붙이면 일반 의존성이 아니라 개발 의존성으로 추가돼요.

$ dart pub add dev:foo           # foo의 호환되는 최신 안정 버전을 추가
$ dart pub add dev:foo:^2.0.0    # foo의 지정한 제약을 추가
$ dart pub add foo dev:bar       # 일반 의존성 foo와 개발 의존성 bar를 동시에 추가

이전에는 -d, --dev 옵션을 사용했어요.

$ dart pub add --dev foo

의존성 override (Dependency override)

의존성 override를 지정하려면 override: 접두사를 붙이고 버전 제약이나 다른 패키지 descriptor를 함께 적어줘요. 예를 들어 package:foo를 참조하는 모든 부분을 1.0.0 버전으로 강제하려면 다음 명령어를 실행해요.

$ dart pub add override:foo:1.0.0

이 명령어는 pubspec.yaml 파일에 다음과 같은 override를 추가해요.

dependency_overrides:
  foo: 1.0.0

패키지 descriptor (Package descriptor)

의존성을 추가할 때 버전이나 의존성 소스를 지정하려면, 패키지 이름 뒤에 콜론을 붙여 descriptor 문법을 사용해요. 예를 들어 다음 명령어는 package:foo를 git 저장소를 소스로 하는 개발 의존성으로 추가해요.

$ dart pub add dev:foo:"{git: https://github.com/foo/foo}"

descriptor 문법을 쓰면 서로 다른 소스의 여러 패키지를 한 번에 의존성으로 추가하고, 각각에 다른 옵션과 제약을 적용할 수 있어요.

옵션 (Options)

모든 pub 명령어에 적용되는 옵션은 글로벌 옵션 문서에서 확인할 수 있어요.

--[no-]offline

기본적으로 pub은 네트워크에 연결해서 호스팅된 패키지를 가져와요 (--no-offline). 대신 캐시된 패키지를 쓰려면 --offline을 사용해요. 자세한 내용은 오프라인에서 의존성 가져오는 방법을 참고해요.

-n, --dry-run

어떤 의존성이 바뀔지 보여주기만 하고, 실제로는 아무것도 바꾸지 않아요.

--[no-]precompile

기본적으로 pub은 바로 아래 단계 의존성(immediate dependencies)에 있는 실행 파일을 미리 컴파일해요 (--precompile). 미리 컴파일을 막으려면 --no-precompile을 사용해요.

--[no-]example

기본적으로 지정한 의존성을 추가한 뒤, pub은 패키지의 example/ 디렉터리에 있는 의존성도 함께 가져와요 (--example). example 의존성을 건너뛰려면 --no-example을 사용해요.

워크스페이스에서

Pub 워크스페이스에서 dart pub add를 실행하면, 현재 디렉터리에 있는 패키지에만 의존성을 추가해요. 자세한 문제 해결 방법은 pub 문제 해결 가이드를 확인해 주세요.

더 알아보기