프로젝트의 노드 버전 제한하기

안녕하세요 Mambo 입니다.

오늘은 함께 일하는 개발자들이 프로젝트마다 사용해야하는 노드 버전을 제한하는 방법에 대하여 공유하려고 해요.

프로젝트 노드 버전 제한

프로젝트에서 사용하는 패키지마다 지원하는 최소 노드 버전이 다를 수 있습니다. 예를 들어, 다음과 같이 패키지 버전이 업데이트되면서 요구하는 노드 버전이 변경될 수 있습니다.

Package.json

Package.json 파일의 engines 속성으로 프로젝트에서 사용하는 NPM 또는 노드 버전을 명시할 수 있습니다.

{
  "engines": {
    "npm": ">=6.4.1",
    "node": ">=12.13.0"
  }
}

엔진 제한 옵션 활성화

Package.json 파일에 노드 버전을 명시하더라도 사용자의 엔진을 제한할 수는 없습니다. 이를 별도로 제한하기 위해서는 프로젝트 폴더에 .npmrc 파일을 만들고 engine-strict 옵션을 활성화해야합니다.

engine-strict=true

노드 엔진 제한 여부 확인

노드 버전을 명시하고 엔진 제한 옵션을 활성화하였으므로 실제로 노드 엔진이 제한되는지 확인해보겠습니다.

npm i
npm ERR! code ENOTSUP
npm ERR! notsup Unsupported engine for @1.0.0: wanted: {"npm":">=6.4.1","node":">=12.13.0"} (current: {"node":"10.23.0","npm":"6.14.8"})
npm ERR! notsup Not compatible with your version of node/npm: @1.0.0
npm ERR! notsup Not compatible with your version of node/npm: @1.0.0
npm ERR! notsup Required: {"npm":">=6.4.1","node":">=12.13.0"}
npm ERR! notsup Actual:   {"npm":"6.14.8","node":"10.23.0"}

현재 사용중인 노드 버전은 10.23.0 이지만 프로젝트에서 요구하는 버전은 12.13.0 이상이므로 오류가 발생하였습니다.

이상으로 프로젝트에서 지원하는 최소 노드 엔진 버전을 명시하고 프로젝트에 참여하는 모든 개발자들이 알맞은 노드 버전을 사용하도록 안내할 수 있게 되었습니다.

감사합니다.

참고