Skip to content

Node.js 버전 관리

fnm 은 강력한 버전 관리 기능을 제공하여 여러 Node.js 버전 간에 쉽게 전환할 수 있습니다.

기본 작업

설치된 버전 보기

bash
fnm list

출력 예제:

* v20.10.0 default
  v18.19.0
  v16.20.2
  • * 는 현재 사용 중인 버전을 나타냅니다
  • default 는 기본 버전을 나타냅니다

현재 버전 보기

bash
fnm current

버전 전환

bash
# 특정 버전으로 전환
fnm use 20

# 특정 정확한 버전으로 전환
fnm use 20.10.0

# 버전이 설치되지 않은 경우 자동 설치 후 전환
fnm use 18 --install-if-missing

기본 버전

기본 버전 설정

bash
fnm default 20

기본 버전은 다음과 같습니다:

  • 새 터미널 세션이 시작될 때 사용되는 버전
  • 버전 파일이 없을 때 사용되는 버전

기본 버전 보기

bash
fnm default

버전 별칭

별칭을 사용하면 버전에 대해 기억하기 쉬운 이름을 설정할 수 있습니다.

별칭 생성

bash
# 버전의 별칭 설정
fnm alias 20 default
fnm alias 18 legacy
fnm alias 16 old

별칭 사용

bash
# 별칭을 통해 버전 전환
fnm use default
fnm use legacy

별칭 삭제

bash
fnm unalias legacy

자동 버전 전환

fnm 은 프로젝트 디렉토리에 따라 Node.js 버전을 자동으로 전환할 수 있습니다.

자동 전환 활성화

Shell 구성에 --use-on-cd 를 추가합니다:

bash
eval "$(fnm env --use-on-cd)"

버전 파일 생성

프로젝트 루트에 .node-version 또는 .nvmrc 파일을 생성합니다:

bash
# .node-version 사용 (권장)
echo "20" > .node-version

# 또는 .nvmrc 사용 (nvm 과 호환)
echo "v18.17.0" > .nvmrc

버전 파일 형식

.node-version 은 다음 형식을 지원합니다:

20           # 주요 버전, 최신 20.x.x 사용
20.10        # 마이너 버전, 최신 20.10.x 사용
20.10.0      # 정확한 버전
lts/iron     # LTS 버전 이름

버전 파일 구문 분석 전략

fnm 은 두 가지 버전 파일 구문 분석 전략을 지원합니다:

bash
# local (기본값) - 현재 디렉토리만 검색
fnm env --version-file-strategy=local

# recursive - 상위 디렉토리 재귀적으로 검색
fnm env --version-file-strategy=recursive

package.json engines 지원

fnm 은 package.jsonengines.node 필드를 읽을 수 있습니다:

json
{
  "engines": {
    "node": ">=18.0.0"
  }
}

기본적으로 활성화되어 있으며 환경 변수를 통해 비활성화할 수 있습니다:

bash
export FNM_RESOLVE_ENGINES=false

버전 관리 모범 사례

1. 프로젝트 수준 버전 잠금

각 프로젝트에 .node-version 파일을 생성합니다:

bash
cd my-project
echo "20" > .node-version
fnm install
fnm use

2. 팀 협업

.node-version 을 Git 에 추가합니다:

bash
git add .node-version
git commit -m "chore: add .node-version"

3. CI/CD 구성

CI/CD 환경에서 fnm 을 사용합니다:

yaml
# GitHub Actions
- name: fnm 설치
  run: curl -fsSL https://fnm.vercel.app/install | bash

- name: Node.js 설치
  run: fnm install && fnm use

4. 다중 버전 개발

bash
# 여러 버전 설치
fnm install 20
fnm install 18
fnm install 16

# 쉽게 전환할 수 있도록 별칭 설정
fnm alias 20 current
fnm alias 18 legacy
fnm alias 16 old

# 다른 프로젝트에서 다른 버전 사용
cd project-new && fnm use current
cd project-old && fnm use legacy

버전 제거

bash
# 특정 버전 제거
fnm uninstall 16.20.2

# 별칭을 통해 제거 (버전 및 모든 관련 별칭 삭제)
fnm uninstall old

일반적인 문제

버전 전환 후 node 명령어가 업데이트되지 않음

Shell 구성이 올바른지 확인합니다:

bash
# node 경로 확인
which node

# fnm 디렉토리를 가리켜야 함
# ~/.fnm/node-versions/.../bin/node

자동 전환이 작동하지 않음

  1. Shell 구성에 --use-on-cd 가 추가되었는지 확인
  2. 버전 파일이 존재하는지 확인
  3. Shell 구성을 다시 로드

버전 파일 우선순위

fnm 은 다음 순서로 버전을 검색합니다:

  1. 명령줄에 지정된 버전
  2. .node-version 파일
  3. .nvmrc 파일
  4. package.json engines.node
  5. 기본 버전

관련 링크