[경고] The package-lock.json file was created with an old version of npm,

sarifor·2022년 3월 22일
0

문제

git clone으로 예전에 만든 Node.js + Express 프로젝트를 다운받고 제일 최신 커밋에서 npm i 하였는데, 다음과 같은 현상이 발생함. npm run start 하기에는 지장 없음.
(깃허브에서 코드 보기)

  • package-lock.json 파일이 낮은 버전의 npm으로 만들어졌다는 경고가 뜸.
  • package-lock.json에서 lockfileVersion이 1에서 2로 변해 있음.


환경

node.js 16.14.0
npm 8.3.1

원인

프로젝트를 만들 당시 쓴 npm 버전(버전 7 미만 추측)이, 내 컴에 설치된 npm 버전(8.3.1)보다 낮았음.

해결

방법 1) 경고일 뿐이니 무시.
방법 2) 예전에 쓴 npm으로 다운그레이드. (미검증)
방법 3) npm을 버전 7 미만으로 다운그레이드한다. package-lock.json에서 lockfileVersion이 1에서 2로 바뀐 것은 npm 7부터이기 때문이다. (미검증)

나는 방법 1을 택했다.

보충

위의 이슈를 해결하는 과정에서 알게 된 관련 지식을 정리하였다. (package-lock.json의 쓰임새 등)

1. package-lock.json이란 ?

정의

package-lock.json 파일은 npm을 사용해서 node_modules 트리나 package.json 파일을 수정하게 되면 자동으로 생성되는 파일이다. 파일이 생성되는 시점의 의존성 트리에 대한 정확한 정보를 가지고 있다.
package-lock.json이 존재하는 경우 npm install의 동작이 조금 달라진다. npm install 시 더 이상 package.json을 계산하지 않고, package-lock.json에 명시된 의존 패키지들을 통해 node_modules를 만들어낸다.

주의할 점

package-lock.json은 패키지 매니저가 신규 패키지를 설치하거나 기존 패키지를 갱신/제거할 때마다 package.json과 자동으로 동기를 맞춰주기 때문에 개발자가 이 파일을 직접 수정해야 할 필요는 없으며 해서도 안 된다.

lockFileVersion

package-lock.json의 포맷. npm 7에서 버전 2로 바뀜.

커밋 or not

  • 커밋 찬성 입장
    • 모든 개발자가 같은 node_modules를 가지고 작업하기 위해 필수이다.
  • 커밋 반대 입장
    • 정보 보안을 위해 .gitignore해야 한다. (노마드 코더 수업에서도 이와 같이 배움)

2. 특정 버전의 node.js에 쓰이는 npm의 버전을 알려면 ?

node.js 공식 페이지 > DOWNLOADS > Previous Release에 나와 있다.
예를 들어 node.js 16.14.0의 npm 버전은 8.3.1이다.

3. 프로젝트별로 다른 버전의 node.js/npm 쓰려면 ?

NVM으로 가능하다. (추후 정리)

4. Browserslist: caniuse-lite is outdated.

npm run start 시, 아래와 같은 메시지가 뜰 때가 있는데, 무시해도 된다.
Browserslist: caniuse-lite is outdated. Please run the following command: npx browserslist --update-db

(추후 정리)

요약

Node.js + Express 앱에서 npm i 시 The package-lock.json file was created with an old version of npm가 나와도, 이것은 에러가 아닌 경고이니 무시해도 된다.
package-lock.json은 정확한 의존성 트리 정보를 갖는다. 직접 수정할 일은 없다.
보안 때문에 커밋하지 말라는 의견이 있지만, 협업을 위해 프로젝트 제작 당시의 의존성을 그대로 복원하려면 pacakage-lock.json 역시 커밋해줄 필요가 있다.

참고

profile
잠수 탄 블로그 같지만 살아있어요

0개의 댓글