게이머들은 패치에 울고 웃는다
특히 롤이나, 히오스(ㅠㅠ)같은게임이 으레 그렇다.
이 패치 하나에 캐릭터들 인기가 좌우된다.
해당 게임인 롤 패치노트에선 보통 버그 수정이나
캐릭터들의 능력치 향상 등이 이루어졌다
(간단한 것들은 13.16 -> 13.17 등으로 라벨링 하는듯 하다)
뭔가 새로운 게임모드가 추가되면 14로 넘어가거나,
'시즌'이라는걸 도입하기도 한다.
게임도 소프트웨어의 일종이고, 이러한 패치는 보통
위의 그림처럼 xx.xx등으로 나타내는 경우가 많다.
본인의 경우에는 근 20년전 포트리스, 바람의나라 등부터 계속 봐왔던 패치인데
정작 이 숫자들이 무엇을 의미하는지는 최근에 알게 되었다.
특히 Node에서도 이 버전 관리가 매~우 중요하다
라이브러리 안쓰는 사람 없을거고, 해당 라이브러리는 또한 다른 라이브러리를
참고하기 때문에, 이 관리를 잘못했다간
멀쩡하게 코드상으로 문제없는 기능들이 오작동하거나,
다른 컴퓨터에선 작동 안하게 되룻도 있기 때문이다.
(이걸로 시간뺏기는게 너무 아깝다. 특히 초보일수록)
그럼 이제 Semantic Version에 대해 알아보자
메이저 버전은 API호환성이 깨질만한,
즉 갈아 엎었다는 소리이다
(이 버전은 거의 업그레이드를 하는게 좋다 잘못하면 Deprecated 즉 구시대 유물이라고
사용을 못할 수 있다. 이에 관련해선 LTS 등 여러가지 기법이 있는데 나중에 설명한다)
마이너 버전은 해당 메이저 버전 아래에 있지만, 어느 정도의 기능이 추가된것을 말한다
패치는 말 그대로 자잘한 오타나 버그를 바로잡은 사항이다
롤로 쉽게 얘기를 해보면
메이저 : 롤 세계관이 바뀔만한 업데이트가 이루어졌다
마이너 : 캐릭터나 맵이 추가되었다
패치 : Q스킬후 바로 W스킬을 쓸때 데미지가 안들어가는걸 고쳤다
정도로 얘기할 수 있다.
이 Semantic은 다음과 같은 사항을 준수해야 한다.
- normal version은 X.Y.Z 형태이며 음수가 아닌 정수여야 하며 절대 앞되며 각 수는 증가하는 수여야 한다.
- MAJOR Version이 올라가면 MINOR Version과 PATCH Version은 0이 되야합니다.
- MINOR Version이 올라가면 PATCH Version이 0이 반드시 되어야 합니다.
- 정식배포전에 pre-release하는 경우에는 -또는 . 을 사용합니다.
- 정식배포전에 git commit후 난수가 붙는 경우 그대로 배포할 경우를 build metadata라고 합니다.
ex) 16.9.0-alpha.0 - 만약 MAJOR에 0으로 시작하는 경우(0.y.z)는 은 초기 개발을 위해서 사용합니다.
노드를 하다 보면
이렇게 생긴 버전을 볼 수 있다
사실 저 희안하게 생긴 기호를 이모티콘 이외엔 잘 쓰지 않는데,
이 표기법은 '캐럿'이라고(Caret) 이라고 불리는 표기법이다
이거 이외에도 X표기나, ~ 표기법 등등이 있는데 해당 블로그에 깔끔하게 정리되어 있다.
암기는 아니더라도 한번 쭉 읽으면 감이 올 것이다.
https://velog.io/@seokkitdo/Semantic-Versioning
그럼, 위에 있느 코드에 있는
express ^4.17.1 의 의미는
express 4버전 하의 마이너와 패치 부분 업데이트를 허용한다는 소리이다.
다만, 이 표기는 동일 메이저 버전을 하위 패치나 마이너 부분들이 신뢰한다는 가정 하에
사용하는 표기법이다
제일 많이 사용되기에 질리도록 볼 것이다.
이 표기법을 잘 모르면 훗날 협업할때 문제가 생길수 있으니 꼭 알아둬야 한다고 생각한다
'Node.js' 카테고리의 다른 글
res.json과 res.send 그리고 Etag (0) | 2023.08.28 |
---|