본문 바로가기
  • ANALOG CODE
  • AnalogCode
개발

npm update 시에 package.json 수정안되는 문제

by 아날로그코더 2023. 3. 6.
반응형

무엇을 개발하던 시간이 지나면 의존성 있는 패키지들을 업데이트해야하는 상황이 무조건 생기기 마련이다.

우리의 NodeJS 프로젝트에서 안전하게 패키지를 업데이트 하는 방법을 알아보자.

NodeJS 패키지 업데이트 방법

1. 버전 확인

 업데이트할 패키지을 확인하기 위해 npm outdated 명령어를 입력하면 아래와 같이 나온다.

 

$ npm outdated

아래의 의미가 중요하다.

Current 현재 설치된 버전
Wanted package.json에서 지정된 semVer 한도내의 최신버전
Latest 해당 패키지의 최신버전

우리는 대부분의 상황에서 Wanted 버전으로만 업데이트를 하게 될 것이다.

Latest에서 Major버전이 업데이트되는 상황이 있다면 어떤 일이 발생할지는 각자가 알 거라 생각된다.

 

2. 버전 업데이트

기본적으로 npm update는 package.json에 명시된 semVer 규칙 한도내에서 패키지를 업데이트한다.

package.json에서 대부분의 패키지가 Minor 버전까지만을 제한하므로 update를 해도 대부분 안전할 것이다.

 

$ npm update (패키지명) (--save)

(패키지명) 에 우리가 업데이트하고자 하는 패키지를 넣으면 된다.

--save는 옵션이다.

$ npm update nuxt --save

 

npm outdated를 이용하여 확인해보자

nuxt 패키지가 2.15.8에서 2.16.2 버전으로 업데이트 된것을 알 수 있다.

즉, Wanted 버전으로 업데이트가 되었다.

 

3. --save 옵션

근데 여기서 중요한 옵션이 바로 --save 옵션이다.

--save 옵션이 없으면 package.json 파일에는 버전이 바뀌지가 않는다.

 

 

package.json

dependencies": {
  "nuxt": "^2.15.8",
},

근데 사실  package-lock.json에서 관리를 해주기 때문에 --save 옵션을 안주어도 문제가 되진 않는다.

 

근데 이걸 모르던 나로써는 분명히 패키지를 update했는데 package.json에 버전이 바뀌지가 않아서 한참 원인을 찾아다니고

결국 버전을 명시해서 다시 install을 하곤 했다.

 

npm 문서를 보면 이에 대한 설명이 자세히 나와있다.

https://docs.npmjs.com/cli/v8/commands/npm-update?v=true#save

 

npm-update | npm Docs

Update packages

docs.npmjs.com

 

4. 결국 정리하면 이거다.

npm update package-lock.json 파일만 변경
npm update --save package-lock.json / package.json 파일 모두 변경

npm update를 했는데 package.json은 업데이트가 되지 않아서 업데이트가 안된줄 아는 분들이 있다면

그건 아니라고 말씀드리고 싶다.

package-lock.json에서 세부적인 관리가 되기 때문에 

서버에 소스를 배포하여 빌드한다고 하더라도 package-lock.json에서 관리되기 때문에 업데이트 된 버전으로 설치가 된다고 보면 된다.

하지만 package.json 파일도 변경되길 원한다면 --save 옵션을 주면 된다.

 

 

반응형

댓글