package.json / yarn.lock / 버전오류

전은평·2023년 4월 24일
0

오늘 강의에서 최신버전으로 서버를 열었더니, 열리지가 않았다.

이문제를 해결하기 위해 package.json에서 버전을 조정하고, 시작했는데도 여전히 해결되지 않았다. 하지만 멘토님은 머지않아 곧 해결해주셨는데, 바로 yarn.lock을 삭제하고 다시 yarn install을 한 것이다!!

결과적으로 문제의 원인은 yarn.lock에 최신버전으로 실행했던 기록이 있어 캐싱되어 있었기 때문이다. 그래서 package.json을 수정해도 읽히지 않고 yarn.lock에 기록되어 있던 최신버전을 계속해서 설치한 것이다.

그렇다면 오늘 배운 내용에 대해 간략적으로 적어보겠다.


Versioning?
버전이라는 개념은 이러한 패키지의 변화를 구분하기 위해 사용하기 시작

Semantic Versioning?

버전이라는 코드 형태의 구분방식은 많은 핵심 문제를 해결해주었지만, 버전 명의 작성 방식에 관한 기준이 패키지마다 제각각 다른 것이 여전히 문제가 되었다. 0.x와 1.x의 차이, 1.0.0 혹은 1.000. 선행 배포와 정식 버전의 구분 방법 등 모든 소프트웨어, 패키지는 저마다의 기준을 가지고 있었으며, 이는 어느 정도의 적당한 공통점이 있었지만, 여전히 차이가 존재하고 있기 때문에 해석에 어려움이 있었다.

Semantic Versioning은 Github의 공동창업자인 Tom Preston-Werner가 위의 문제를 해결하기 위해 스펙 문서는 RFC 2119에 의해 규칙을 표기하여 의미적 엄격함을 높이고, 패키지 개발 생명주기에 발생할 수 있는 여러 상황을 포괄적으로 담아 일관성과 유연성을 균형있게 높였다.

0.0.0 이렇게 버전을 표기하는데 첫번째 0자리의 의미부터 설명을 해보겠다. 첫번째 0자리는 해당 프로그램의 아주 큰 변화가 있을 때, 하나씩 숫자를 높인다. 두번째 0자리는 새로운 기능추가, 마지막은 버그 수정시 변화를 준다. 이러한 규칙으로 인해 버전간의 해석과 의미적 일관성을 높일 수 있게 되었다.

더 자세한 내용은 내가 참고한 자료에서 자세하게 설명해주시니 보면 좋을 것 같다
<참고자료>


package.json에 있는 버전 그대로 무조건 설치해주는 것이 아니라는 것을 배울 수 있었다.

실무 나가면, 버전 차이로 인해 이런 일이 자주 생긴다고 하셨는데.. 그럴 땐 오늘 내가 쓴 블로그 떠올려보자.. yarn.lock 삭제 후 다시 설치..!!!!

참고자료
https://spoqa.github.io/2012/12/18/semantic-versioning.html

profile
`아는 만큼 보인다` 라는 명언을 좋아합니다. 많이 배워서 많은 걸 볼 수 있는 개발자가 되고 싶습니다.

0개의 댓글