dart pub downgrade로 의존성 버전 낮추기
dart pub downgrade로 의존성 버전 낮추기
dart pub downgrade 명령어를 쓰면 Dart 애플리케이션이 사용하는 모든 의존성을 가장 낮은 버전으로 가져올 수 있어요. 특정 의존성만 낮추거나, 오프라인에서 작업하는 방법도 함께 살펴볼게요.
본문
dart pub downgrade는 pub 도구의 명령어 중 하나예요. 다른 인자 없이 실행하면 현재 작업 디렉터리의 pubspec.yaml 파일에 나열된 모든 의존성과 그 전이 의존성을 가장 낮은 버전으로 가져와요. 예를 들어:
$ dart pub downgrade
Resolving dependencies... (1.2s)
+ barback 0.13.0
+ collection 0.9.1
+ path 1.2.0
+ source_maps 0.9.0
+ source_span 1.0.0
+ stack_trace 0.9.1
Changed 6 dependencies!
dart pub downgrade 명령어는 lockfile을 만들어요. 이미 lockfile이 있으면 pub은 그 파일을 무시하고, 모든 의존성의 가장 낮은 버전을 기준으로 처음부터 새로 만들어요. 패키지 해석과 시스템 패키지 캐시에 대한 자세한 내용은 dart pub get 문서를 참고해 주세요.
특정 의존성만 낮추기
특정 의존성만 가장 낮은 버전으로 낮추고 나머지 의존성은 되도록 그대로 두는 것도 가능해요. 예를 들어:
$ dart pub downgrade test
Resolving dependencies...
barback 0.15.2+2
bot 0.27.0+2
browser 0.10.0+2
chrome 0.6.5
collection 1.1.0
path 1.3.0
pool 1.0.1
source_span 1.0.2
< stack_trace 0.9.2 (was 1.1.1)
stagexl 0.10.2
< test 0.10.0 (was 0.11.4)
These packages are no longer being depended on:
- matcher 0.11.3
Changed 3 dependencies!
특정 의존성을 낮출 때 pub은 새 의존성 제약 조건에 맞는 전이 의존성의 가장 높은 버전을 찾으려고 해요. 그래서 전이 의존성들도 보통 함께 낮춰져요.
새 의존성 가져오기
dart pub downgrade를 실행하기 전에 pubspec에 의존성을 새로 추가하면, 그 의존성과 전이 의존성들을 함께 가져와요. 이는 dart pub get과 동일한 동작이에요.
의존성 제거하기
dart pub downgrade를 실행하기 전에 pubspec에서 의존성을 제거하면, 그 의존성은 더 이상 import로 사용할 수 없게 돼요. 제거한 의존성의 전이 의존성도 남아있는 즉시 의존성 중 그들을 사용하는 게 없다면 함께 제거돼요. 이 역시 dart pub get과 같은 동작이에요.
오프라인에서 버전 낮추기
네트워크에 접속하지 못해도 dart pub downgrade를 실행할 수 있어요. pub은 패키지를 시스템의 모든 패키지가 공유하는 중앙 캐시에 다운로드하므로, 네트워크 없이도 이전에 다운로드한 패키지를 자주 찾아낼 수 있어요.
다만 기본적으로 호스팅된 의존성이 있으면 dart pub downgrade는 온라인 상태로 시도해요. 그렇게 하지 않으려면 --offline 플래그를 넘겨주세요. 오프라인 모드에서 pub은 로컬 패키지 캐시만 살펴보면서 이미 있는 것 중에 여러분의 패키지와 잘 맞는 버전 집합을 찾으려고 해요.
옵션 (Options)
모든 pub 명령어에 적용되는 옵션은 글로벌 옵션 문서에서 확인할 수 있어요.
--[no-]offline
기본적으로 pub은 네트워크에 연결해서 호스팅된 패키지를 가져와요 (--no-offline). 대신 캐시된 패키지를 쓰려면 --offline을 사용해요. 자세한 내용은 오프라인에서 의존성 가져오는 방법을 참고해요.
--dry-run 또는 -n
어떤 의존성이 바뀔지 보여주기만 하고, 실제로는 아무것도 바꾸지 않아요.
--[no-]example
기본적으로 pub은 패키지의 example/ 디렉터리에 있는 의존성도 함께 낮춰요 (--example). example 의존성 낮추기를 건너뛰려면 --no-example을 사용해요.
--tighten
--tighten 옵션에 대한 지원은 Dart 3.5에서 추가됐어요. pubspec.yaml에 있는 의존성의 하한을 해석된 버전에 맞게 갱신하고, 바뀐 제약 목록을 반환해요. 특정 의존성에만 적용할 수도 있어요. 자세한 문제 해결 방법은 pub 문제 해결 가이드를 확인해 주세요.
워크스페이스에서
Pub 워크스페이스에서 dart pub downgrade를 실행하면 워크스페이스 전체의 모든 의존성을 낮춰요.
더 알아보기
- dart pub get — 의존성 가져오는 명령어와 lockfile 이해하기
- dart pub upgrade — 의존성을 최신 버전으로 올리는 명령어 보기