티스토리 뷰

반응형

Version constraints 문서를 보면

버전 제약 조건을 caret syntax (^1.2.3) 또는 traditional syntax ('>=1.2.3 <2.0.0') 로 표현할 수 있다고 나와있습니다. 

 

 

1. traditional syntax 

 

test package 의 버전 제약조건을 전통적인 syntax로 표현한 예시입니다.

 

 

 

문서에는 1.2.3 버전을 예로 들어 설명해주고 있는데요, 살펴보겠습니다. 

 

 

any
모든 버전을 허용. 
이는 빈 버전 제약 조건(empty version constraint)과 동일하지만 더 명시적입니다. 

하지만 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 버전 미만. 

지정된 버전보다 낮은 버전을 허용하지만 해당 버전 자체는 허용하지 않습니다 . 

일반적으로 사용합니다. (패키지에서 작동 하지 않는 상위 버전을 지정할 수 있기 때문에) 

 

 

 

==> 정리해보면 

전통적인 syntax에서는 이상, 미만을 일반적으로 사용한다고 합니다. 

그리고 주의해야할 점은 '' 로 감싸줘야합니다.  >=1.2.3 <2.0.0 대신  '>=1.2.3 <2.0.0'  를 사용하라고 문서에 적혀있습니다! 

 

 

2. caret syntax

 

버전 제약 조건을 표현하는 간결한 방법입니다.  

가장 일반적으로 사용되는 방법이며 문서에서도 위의 traditional syntax 대신 캐럿 syntax 를 쓰도록 권장하고 있습니다. 

 

 

^version 로 표현하는데, 이는 지정된 버전과 역호환성이 보장되는 모든 버전의 범위를 의미한다고 합니다 (??)

 

예를들어 ^1.2.3 은  traditional syntax로 표현하면  '>=1.2.3 <2.0.0' 과 동일하고 

^0.1.2 traditional syntax로 표현하면  '>=0.1.2 <0.2.0' 과 동일합니다.  

(참고로 traditional syntax 처럼 ''로 안감싸줘도 됩니다) 

 

 

캐럿 syntax는 Dart 1.8.3 부터 도입되었기 때문에

이전 버전의 pub에서 처리를 시도하지 않도록 하려면  SDK constraint (using traditional syntax이 필요합니다. 

 

 

 

[ 참고 ]

 

pubspec file > SDK constraints 문서를 보면

Dart SDK constraint에는 caret syntax 쓰지 말라고 하네요! 

 

 

 

 

반응형
댓글