node.js 환경에서 외부 의존성 패키지를 추가할 때, 보통 다음과 같이 버전을 명시할 수 있다.
# yarn을 사용한다면
yarn add package-name@version
# npm을 사용한다면
npm install package-name@version
그런데 버전 뿐 아니라, 다음과 같이 특별한 태그를 지정할 수도 있다. (이걸 dist-tag 라고 부른다.)
가장 많이 쓰이는 태그는 latest다.
# yarn
yarn add package-name@latest
# npm
npm install package-name@latest
이렇게 설치를 하면 프로젝트의 디펜던시는 특정 버전이 아닌, 배포된 패키지의 최신 버전을 자동으로 바라보게 된다.
// next 의존성을 latest로 설치한 결과
{
"name": "test-project",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"dependencies": {
"next": "latest",
}
}
이게 여럿이서 협업하는 환경, 또는 지속적으로 배포가 되는 환경이라면 큰 문제가 될 수 있다. 다른 개발자나 배포 환경에서 의존성을 설치할 때 각기 다른 버전의 패키지가 설치될 수 있기 때문이다.
내가 프로젝트를 처음 세팅할 때 next의 버전은 12.3이었다고 하자. 그런데 불과 한 달 만에 next는 13 버전을 발표했고, 디렉토리 구조와 각종 새로운 기능들이 포함된 컴포넌트들이 추가되었다. 이후에 내 프로젝트를 install하는 동료 개발자의 PC 혹은 운영 배포 환경은 이 사실을 모른 채 가장 최신 버전인 next 13을 install한 뒤 프로젝트를 구동하려고 할 것이다 (…)
따라서 프로덕션 환경에서는 구체적인 버전 번호나 범위(Range)를 명시하는 것이 좋다.
패키지가 특정 버전을 바라보게 바꿔보자
우선 현재 프로젝트에 설치된 각 패키지의 구체적인 버전 정보를 알아야 한다. npm을 사용한다면 package-lock.json, yarn을 사용한다면 yarn.lock 파일에서 설치된 구체적인 버전을 확인할 수 있다. yarn.lock 파일을 기준으로는 다음과 같이 확인해볼 수 있겠다.
latest tag를 기준으로 next 패키지가 설치되었고, 실제 설치된 버전은 13.5.3 이다.
그런데 난 lock 파일 너무 커서 보기도 힘들고 귀찮다!
그렇다면 간편하게 CLI 명령어를 통해 설치된 버전을 확인하는 방법도 있다.
# yarn
yarn why next
# npm
npm ls next
이 명령어는 next 패키지에 대한 정보를 출력해주는데, 이때 Version 섹션에서 해당 패키지의 설치된 버전을 확인할 수 있다.
이렇게 알아낸 버전을 package.json에 직접 업데이트해주면 된다.
나같은 경우 메이저 버전 내의 최신 버전을 설치하도록 하기 위해 캐럿(^)을 사용했다.
"dependencies": {
"next": "^13.5"
}
이렇게 패키지가 latest로 설치되어버린 사태를 해결했다. 업데이트 한 뒤에도 정상 동작하는지 테스트하는 것까지 잊지 말자.
'Web > Node.js' 카테고리의 다른 글
husky & lint-staged로 린트 검사 자동화하기 (2) | 2023.06.11 |
---|---|
node_modules로부터의 해방, yarn berry를 사용해보자 (0) | 2023.06.04 |
[npm] package-lock.json이 필요한 이유 (0) | 2023.03.12 |