일반적으로 Pubspec에서 package를 지정하는 방법은 아래와 같다.
dependencies:
firebase_core: ^1.11.0
그런데... 내가 무언가 했겠지만.... 갑자기 빌드가 안된다... 그래서 알아봤다.
대체 ^ 이게 무슨 의미인가?
플루터에서 추천하는 Caret Syntax는 작성한 버전의 호환되는 버전 범위를 가져온다는 의미라고 한다.
즉 .. ^1.2.3은 '>= 1.2.3 <2.0.0' 과 동일하다고 한다. 즉, package의 범위를 나타낸다.
그럼 왜 2.0.0일까 ?
이는 flutter 패키지의 버젼정보 규칙을 따른다.
버전을 주.부.수 숫자로 하고:
1. 기존 버전과 호환되지 않게 API가 바뀌면 “주(主) 버전”을 올리고,
2. 기존 버전과 호환되면서 새로운 기능을 추가할 때는 “부(部) 버전”을 올리고,
3. 기존 버전과 호환되면서 버그를 수정한 것이라면 “수(修) 버전”을 올린다.
주.부.수 형식에 정식배포 전 버전이나 빌드 메타데이터를 위한 라벨을 덧붙이는 방법도 있다.
from https://semver.org/lang/ko/
즉, 1.2.3에서
버그를 수정하면 1.2.4로
신규 기능이 올라가면 1.3.3으로
기존 버젼과 호환이 되지 않으면 2.0.0으로
따라서 Caret Syntax(^1.2.3)의 의미는 2.0.0보다 작고 1.2.3보다는 크거나 같다는 것을 의미한다고 한다.
그외에
Any : 암꺼나..... 음 이건 안쓸꺼 같다.
1.2.3: 특정 버젼을 명시!!
>= 1.2.3, >1.2.3, <=1.2.3, <1.2.3: 표기한 기호의 수학적 의미를 그대로 따라가는 듯 하다.
Caret Syntax를 사용할때는 "", '' 가 불필요 하다.
Traditional Syntax를 사용할 때는 꼭! "", '' 가 필요하다.
[참고자료]
유의적 버전 2.0.0
Semantic Versioning spec and website
semver.org
https://dart.dev/tools/pub/dependencies
Package dependencies
Add other packages to your app. Specify package locations, version constraints, and more.
dart.dev
'Work > Flutter' 카테고리의 다른 글
[Flutter Web] 로컬 개발시 CORS 오류 (0) | 2022.02.28 |
---|