[Flutter] 패키지 버전 명시

찐흙덩어리·2024년 6월 5일

1. ^ Caret syntax

  • 지정된 버전과 호환이 되는 모든 버전의 범위를 뜻함
  • ^1.2.3은 1.2.3 버전보다 같거나 높고 2.0.0 버전보다는 낮은 모든 버전을 뜻함
  • 결론은 ^1.2.3 == >=1.2.3 < 2.0.0 이다.
  • 해당 명시법은 Dart 1.8.3 버전에서 출시된 기능으로 이하 버전인 경우 제대로 동작되지 않을수 있다.

2. Traditional syntax

  • 부등호를 통해 해당 버전 이상/이하/초과/미만을 설정할 수 있으며, 한칸 띄우고 연달아 사용 시 and(&)의 의미를 갖는다.
  • caret 방식의 경우 따옴표('')를 붙이지 않지만 Traditional의 경우 따옴표를 반드시 붙여줘야 한다.

버전 명시 종류

any

  • 모든 버전을 허용
  • 권장하지 않음. 프로젝트에 영향을 줄 수 있다.

1.2.3

  • 오직 1.2.3 버전만 허용
  • 권장하지는 않는 방식 함께 의존하는 다른 패키지를 사용하기 어렵게 만들 수 있다.

>=1.2.3

  • 1.2.3 버전 이상.
  • 주어진 버전 또는 이상의 버전을 허용한다.
  • 일반적으로 사용된다.

>1.2.3

  • 1.2.3 초과 버전
  • 지정된 버전보다 큰 모든 버전을 허용한다.

<=1.2.3

  • 1.2.3 버전 이하.
  • 지정된 버전 또는 낮은 모든 버전을 허용한다.

<1.2.3

  • 1.2.3 버전 미만.
  • 지정된 버전보다 낮은 버전을 허용한다.
  • 일반적으로 사용한다.(패키지에서 작동하지 않는 상위 버전을 지정할 수 있기 때문이다.)

Flutter team에서는 Caret Syntax를 통해 버전 관리를 권장했다.

environment:
  sdk: '>=3.3.1 <4.0.0'

// pubspec.yaml의 Dart SDK 버전 설정 내용이다.
// 공식문서에 Dart SDK constraint에는 caret syntax를 사용하지 말라고 되어있다.

버전 암시

1.2.3 (주.부.수)

  • 기존 버전과 호환되지 않게 API가 바뀌면 "주"
  • 기존 버전과 호환되면서 새로운 기능이 추가된 경우 "부"
  • 기존 버전과 호환되면서 버그가 수정된 것이라면 "수"

패키지 버전이 업데이트 됐을 때 해당 문서 Change Log를 확인하는 것이 좋겠으나,
대강 어떤게 업데이트 됐겠구나 추측이 가능하다

profile
메모장용

0개의 댓글