GitHub

nvm-sh/nvm — Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions.

nvm-sh/nvm: 셸에서 Node.js 버전 관리하기

nvm은 사용자별로 설치해 셸에서 여러 Node.js 버전을 설치하고 전환하는 POSIX 호환 버전 관리자입니다. 프로젝트의 .nvmrc에 버전을 지정하면 해당 디렉터리에서 쓸 버전을 선택할 수 있으며, Docker와 비대화형 셸 설정 방법도 안내합니다.

에디터 노트

프로젝트별 Node.js 버전을 .nvmrc로 고정하는 방식은 간단하지만, 파일을 둔다고 디렉터리 이동 때 자동 전환되지는 않습니다. README도 자동 전환에는 별도의 셸 함수를 추가하도록 안내합니다. 이 구분은 버전 선택과 셸 편의 기능을 혼동하지 않게 해줍니다. 컨테이너와 CI에서도 사용할 수 있지만 nvm은 셸 함수라서 비대화형 Bash가 일반 프로필을 읽지 않는 조건을 별도로 처리해야 합니다. 문서의 BASH_ENV 예제는 그 실행 환경을 해결하는 방법입니다. 플랫폼에 맞는 사전 빌드 바이너리가 없으면 소스 컴파일로 넘어가며, Alpine에서는 musl 호환성 때문에 이 조건이 더 자주 문제가 됩니다. 따라서 버전 관리 명령 자체보다 셸 초기화와 대상 플랫폼의 바이너리 지원 여부가 실제 설정의 변수가 됩니다.

AI 요약

nvm은 Bash 스크립트로 구현한 Node.js 버전 관리자입니다. 사용자별로 설치하고 셸마다 불러오는 방식이며, Bash와 Zsh를 비롯한 POSIX 호환 셸에서 작동합니다. Windows에서는 WSL을 지원하지만 Fish는 공식 지원 대상이 아닙니다.

설치와 셸 설정

설치 스크립트는 저장소를 기본적으로 ~/.nvm에 복제하고 셸 프로필에 nvm을 불러오는 코드를 추가합니다. XDG_CONFIG_HOME, NVM_DIR, PROFILE 같은 환경 변수로 설치 위치와 프로필을 조정할 수 있습니다. 기본 셸 프로필을 읽지 않는 비대화형 Bash에서는 BASH_ENV를 설정해 nvm을 불러오도록 구성하는 방법도 제공합니다. Docker 예제는 이미지에 Node.js를 설치한 뒤 컨테이너의 명령 실행 때 nvm을 다시 불러옵니다.

버전 선택과 프로젝트 설정

nvm install과 nvm use로 버전을 설치하고 전환하며, default 별칭으로 새 셸에서 사용할 기본 버전을 정합니다. 특정 버전뿐 아니라 최신 Node.js와 LTS 버전을 지정할 수 있고, nvm ls-remote로 설치 가능한 버전을 확인합니다. 프로젝트 루트에 .nvmrc를 두면 nvm use와 nvm install이 해당 파일의 버전을 읽습니다. 하위 디렉터리에서도 상위 경로의 .nvmrc를 찾지만, 디렉터리 이동 때 자동 전환하려면 셸별 설정을 따로 추가해야 합니다.

설치 조건과 제약

nvm은 가능한 경우 미리 빌드한 바이너리를 내려받고, 해당 플랫폼에 바이너리가 없으면 기본적으로 소스에서 컴파일합니다. 소스 빌드에는 C++ 도구 체인이 필요합니다. Alpine Linux는 musl을 사용해 바이너리 호환성이 다르므로 일부 버전은 소스 빌드나 별도 미러가 필요합니다. 설치한 Node.js 버전 사이에서 전역 npm 패키지를 옮기는 기능과 네트워크 없이 캐시된 버전을 설치하는 --offline 옵션도 제공합니다. npm의 prefix 설정은 nvm과 충돌할 수 있습니다.

원문: GitHub / 번역·요약: Trawling