fnm - 빠르고 간단한 Node.js 버전 관리자
Tools

fnm - 빠르고 간단한 Node.js 버전 관리자

· 7분 읽기

fnm - 빠르고 간단한 Node.js 버전 관리자

fnm(Fast Node Manager)은 Rust로 작성된 빠르고 간단한 Node.js 버전 관리 도구입니다. nvm보다 훨씬 빠른 속도와 크로스 플랫폼 지원이 특징입니다.

fnm이란?

fnm은 여러 Node.js 버전을 쉽게 설치하고 전환할 수 있게 해주는 도구입니다. 프로젝트마다 다른 Node.js 버전이 필요할 때 매우 유용합니다.

주요 특징

  • 빠른 속도: Rust로 작성되어 nvm보다 20배 이상 빠름
  • 크로스 플랫폼: Windows, macOS, Linux 모두 지원
  • .nvmrc 지원: 기존 nvm 프로젝트와 호환
  • 자동 전환: 디렉토리 이동 시 자동으로 Node 버전 전환
  • 간단한 설치: 단일 바이너리로 설치 간편

OS별 설치 방법

macOS

Homebrew를 사용한 설치가 가장 간단합니다.

# Homebrew로 설치
brew install fnm

# 설치 확인
fnm --version

쉘 설정 파일에 다음을 추가합니다.

# ~/.zshrc 또는 ~/.bashrc
eval "$(fnm env --use-on-cd)"

Linux

curl을 사용하여 설치 스크립트를 실행합니다.

# 설치 스크립트 실행
curl -fsSL https://fnm.vercel.app/install | bash

# 설치 확인
fnm --version

쉘 설정 파일에 다음을 추가합니다.

# ~/.bashrc 또는 ~/.zshrc
export PATH="$HOME/.local/share/fnm:$PATH"
eval "$(fnm env --use-on-cd)"

Windows

PowerShell 또는 Chocolatey를 사용할 수 있습니다.

PowerShell 사용

# 관리자 권한으로 PowerShell 실행
winget install Schniz.fnm

# 또는 Chocolatey 사용
choco install fnm

환경 변수 설정

PowerShell 프로필에 다음을 추가합니다.

# PowerShell 프로필 열기
notepad $PROFILE

# 다음 내용 추가
fnm env --use-on-cd | Out-String | Invoke-Expression

Node.js 설치 방법

fnm을 설치했다면 이제 Node.js를 설치할 수 있습니다.

최신 LTS 버전 설치

# 최신 LTS 버전 설치
fnm install --lts

# 설치된 버전 확인
fnm list

특정 버전 설치

# 특정 버전 설치
fnm install 20.10.0
fnm install 18.19.0
fnm install 16.20.2

# 최신 20.x 버전 설치
fnm install 20

설치된 버전 사용

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

# 기본 버전 설정
fnm default 20.10.0

# 현재 버전 확인
node --version

자주 사용하는 fnm 명령어

버전 관리

# 설치 가능한 모든 버전 보기
fnm list-remote

# 설치된 버전 목록
fnm list

# 현재 사용 중인 버전
fnm current

# 특정 버전 제거
fnm uninstall 16.20.2

프로젝트별 버전 관리

# .nvmrc 또는 .node-version 파일 생성
echo "20.10.0" > .node-version

# 파일에 명시된 버전 설치 및 사용
fnm install
fnm use

# 자동 전환 활성화 (쉘 설정에 추가)
eval "$(fnm env --use-on-cd)"

별칭(Alias) 사용

# 별칭 생성
fnm alias 20.10.0 my-project

# 별칭으로 전환
fnm use my-project

# 별칭 목록 보기
fnm alias

알아두면 좋은 고급 기능

1. 자동 버전 전환

디렉토리 이동 시 자동으로 Node 버전을 전환합니다.

# ~/.zshrc 또는 ~/.bashrc에 추가
eval "$(fnm env --use-on-cd)"

이제 .node-version 또는 .nvmrc 파일이 있는 디렉토리로 이동하면 자동으로 해당 버전으로 전환됩니다.

2. 멀티쉘 지원

fnm은 다양한 쉘을 지원합니다.

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

# Zsh
eval "$(fnm env --use-on-cd --shell zsh)"

# Fish
fnm env --use-on-cd --shell fish | source

# PowerShell
fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression

3. 로그 레벨 설정

문제 해결 시 유용한 디버그 모드입니다.

# 디버그 모드로 실행
fnm --log-level=debug install 20.10.0

# 조용한 모드
fnm --log-level=quiet install 20.10.0

4. 커스텀 설치 디렉토리

기본 설치 위치를 변경할 수 있습니다.

# 환경 변수 설정
export FNM_DIR="$HOME/.config/fnm"
eval "$(fnm env --use-on-cd)"

5. Corepack 지원

Yarn, pnpm 등의 패키지 매니저를 쉽게 사용할 수 있습니다.

# Corepack 활성화
corepack enable

# pnpm 사용
corepack prepare pnpm@latest --activate

# Yarn 사용
corepack prepare yarn@stable --activate

실전 활용 예제

프로젝트 설정 예제

# 새 프로젝트 시작
mkdir my-project && cd my-project

# Node 버전 지정
echo "20.10.0" > .node-version

# 해당 버전 설치 및 사용
fnm install
fnm use

# package.json 생성
npm init -y

# 의존성 설치
npm install express

CI/CD 환경에서 사용

GitHub Actions에서 fnm 사용 예제:

name: CI

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      - name: Install fnm
        run: |
          curl -fsSL https://fnm.vercel.app/install | bash
          echo "$HOME/.local/share/fnm" >> $GITHUB_PATH
      
      - name: Install Node.js
        run: |
          eval "$(fnm env)"
          fnm install
          fnm use
      
      - name: Install dependencies
        run: npm ci
      
      - name: Run tests
        run: npm test

nvm에서 fnm으로 마이그레이션

기존 nvm 사용자라면 쉽게 전환할 수 있습니다.

# 1. fnm 설치 (위의 OS별 설치 방법 참고)

# 2. 기존 nvm 버전 확인
nvm list

# 3. fnm으로 동일한 버전 설치
fnm install 20.10.0
fnm install 18.19.0

# 4. 기본 버전 설정
fnm default 20.10.0

# 5. 쉘 설정 업데이트
# nvm 관련 설정 제거하고 fnm 설정 추가
eval "$(fnm env --use-on-cd)"

# 6. (선택) nvm 제거
rm -rf ~/.nvm

문제 해결

명령어를 찾을 수 없음

쉘 설정이 제대로 되지 않은 경우입니다.

# 쉘 설정 파일 다시 로드
source ~/.zshrc  # 또는 ~/.bashrc

# fnm 경로 확인
which fnm

# 수동으로 환경 변수 설정
eval "$(fnm env)"

버전 전환이 안 됨

자동 전환 기능이 활성화되지 않은 경우입니다.

# --use-on-cd 옵션 추가 확인
eval "$(fnm env --use-on-cd)"

Windows에서 권한 오류

PowerShell 실행 정책을 변경해야 할 수 있습니다.

# 관리자 권한으로 실행
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

fnm vs nvm 비교

특징 fnm nvm
속도 매우 빠름 (Rust) 느림 (Bash)
Windows 지원 네이티브 지원 nvm-windows 필요
크로스 플랫폼 완벽 지원 제한적
.nvmrc 지원 지원 지원
자동 전환 지원 추가 설정 필요
설치 크기 작음 (~3MB)

마치며

fnm은 빠르고 간단하며 크로스 플랫폼을 완벽하게 지원하는 현대적인 Node.js 버전 관리 도구입니다. nvm에서 마이그레이션을 고려하고 있다면, 또는 처음 Node.js 버전 관리 도구를 선택한다면 fnm을 강력히 추천합니다.

특히 Windows 환경에서 개발하거나, 여러 OS를 오가며 작업하는 개발자에게 fnm은 최고의 선택이 될 것입니다. 빠른 속도와 간편한 사용법으로 개발 생산성을 크게 향상시킬 수 있습니다.

야근반장

야근반장

프로그래밍과 데이터 분석을 좋아하는 개발자입니다. 낮에도 밤에도 코딩하는 주경야근 라이프를 살고 있습니다.

GitHub