Fast Node Manager
1. 개요
1. 개요
Fast Node Manager(fnm)는 Node.js 버전을 관리하는 도구이다. Rust 프로그래밍 언어로 작성되어 빠른 속도와 간결함을 주요 특징으로 한다. 개발자 Schniz에 의해 개발되었으며, Linux, macOS, Windows 등 주요 운영체제를 모두 지원하는 크로스 플랫폼 도구이다.
이 도구의 주요 용도는 여러 Node.js 버전을 시스템에 설치하고, 프로젝트나 상황에 따라 사용할 버전을 쉽게 전환하는 것이다. 이를 통해 개발자는 서로 다른 Node.js 버전을 요구하는 여러 프로젝트를 효율적으로 관리할 수 있다.
기존의 다른 Node.js 버전 관리자들에 비해 설치와 실행 속도가 빠르며, 단일 실행 파일로 구성되어 배포와 사용이 간단하다. 또한 프로젝트 디렉토리에 .node-version 파일이나 .nvmrc 파일을 생성해 두면, 해당 디렉토리로 이동할 때 자동으로 지정된 버전의 Node.js를 사용하도록 설정할 수 있는 편의 기능을 제공한다.
fnm은 명령줄 인터페이스를 통해 동작하며, Node.js 버전 설치, 전환, 제거, 설치된 버전 목록 확인 등 버전 관리에 필요한 핵심 기능을 제공한다.
2. 특징
2. 특징
fnm은 Rust 언어로 작성되어 속도와 성능에 중점을 둔 Node.js 버전 관리자이다. 가장 큰 특징은 크로스 플랫폼을 완벽하게 지원한다는 점으로, Windows, macOS, Linux 운영체제에서 동일한 방식으로 사용할 수 있다. 이는 기존의 nvm이 macOS와 Linux에만 국한되고, Windows용 포트인 nvm-windows는 관리가 중단된 점을 해결한 장점이다.
설치와 실행 속도가 매우 빠르며, 단일 실행 파일로 구성되어 간편하게 설치할 수 있다. 셸 환경 설정 후에는 .node-version 파일이나 .nvmrc 파일을 프로젝트 디렉토리에 배치함으로써 해당 디렉토리로 이동할 때 자동으로 지정된 Node.js 버전으로 전환되는 기능을 지원한다. 이를 통해 개발자는 수동으로 버전을 전환할 필요 없이 프로젝트에 맞는 런타임 환경을 자동으로 유지할 수 있다.
명령어 체계는 직관적이고 간결하여 배우기 쉽다. fnm install, fnm use, fnm ls와 같은 기본 명령어를 통해 버전 설치, 전환, 목록 확인을 손쉽게 수행할 수 있으며, fnm alias 명령어를 통해 특정 버전에 별칭을 부여하여 관리의 편의성을 높일 수 있다. 또한 롱텀 서포트 버전 설치나 부분 버전 매칭과 같은 편의 기능도 제공한다.
3. 설치 방법
3. 설치 방법
3.1. Linux 및 macOS
3.1. Linux 및 macOS
Linux 및 macOS 시스템에서 Fast Node Manager를 설치하는 주요 방법은 자동 설치 스크립트를 사용하는 것이다. 이 방법은 bash, zsh, fish와 같은 대부분의 셸 환경에서 작동하며, curl과 unzip이 시스템에 설치되어 있어야 한다. 다음 명령어를 실행하면 설치가 완료된다.
```bash
curl -fsSL https://fnm.vercel.app/install | bash
```
스크립트 실행 시 --install-dir 옵션으로 설치 경로를 변경하거나, --skip-shell 옵션으로 셸 설정 파일 자동 수정을 건너뛸 수 있다. macOS 사용자의 경우 Homebrew를 통한 설치도 권장된다. brew install fnm 명령어로 간편하게 설치할 수 있으며, 이후 셸 설정을 완료해야 한다. 설치가 완료되면, 사용 중인 셸에 맞게 환경 변수를 설정해야 fnm을 정상적으로 사용할 수 있다.
3.2. Windows
3.2. Windows
Windows에서 Fast Node Manager를 설치하는 방법은 여러 가지가 있다. 가장 권장되는 방법은 윙겟 패키지 관리자를 사용하는 것이다. 관리자 권한이 필요 없는 터미널에서 winget install Schniz.fnm 명령어를 실행하면 간편하게 설치할 수 있다. 또한 스쿱이나 초콜릿리 같은 다른 패키지 관리자를 통해 scoop install fnm 또는 choco install fnm 명령어로도 설치가 가능하다.
설치 후에는 셸 환경을 설정해야 한다. PowerShell을 사용하는 경우, 프로필 파일에 fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression 명령어를 추가해야 한다. 이 설정은 사용자가 .node-version 또는 .nvmrc 파일이 있는 프로젝트 디렉토리로 이동(cd)할 때 자동으로 해당 Node.js 버전으로 전환되도록 하는 기능을 활성화한다. 프로필 파일이 없는 경우 New-Item $profile -Force 명령어로 생성할 수 있다.
이후 터미널에서 fnm install 20 또는 fnm install --lts와 같은 명령어로 원하는 Node.js 버전을 설치하고, fnm use 명령어로 버전을 전환할 수 있다. Fast Node Manager는 Windows에서도 관리자 권한 없이 버전 설치 및 전환이 가능하며, nvm-windows와 달리 지속적으로 유지보수되고 있어 안정적으로 사용할 수 있는 장점이 있다.
3.3. 셸 설정
3.3. 셸 설정
fnm을 설치한 후에는 셸에 환경 변수를 설정해야 정상적으로 사용할 수 있다. 이는 fnm env 명령어의 출력을 평가(eval)하여 수행한다. 주요 셸별 설정 방법은 다음과 같다.
Bash 사용자는 ~/.bashrc 파일에 eval "$(fnm env --use-on-cd --shell bash)" 줄을 추가해야 한다. Zsh 사용자는 ~/.zshrc 파일에 동일한 형식으로 --shell zsh 옵션을 사용하여 추가한다. Fish 셸 사용자는 ~/.config/fish/conf.d/fnm.fish 파일을 생성하고 fnm env --use-on-cd --shell fish | source 명령어를 입력한다. Windows PowerShell 사용자는 프로필 파일(Microsoft.PowerShell_profile.ps1)에 fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression 줄을 추가한다.
여기서 사용된 --use-on-cd 플래그는 프로젝트 디렉터리에 .node-version 또는 .nvmrc 파일이 있을 경우, 해당 디렉터리로 이동(cd)할 때 자동으로 지정된 Node.js 버전으로 전환하는 편리한 기능을 활성화한다. 셸 설정을 완료한 후에는 터미널을 재시작하거나 설정 파일을 다시 읽어오면(예: source ~/.zshrc) fnm을 즉시 사용할 수 있다.
4. 기본 사용법
4. 기본 사용법
4.1. Node.js 버전 설치
4.1. Node.js 버전 설치
fnm을 사용하여 Node.js 버전을 설치하는 방법은 매우 직관적이다. 기본 명령어는 fnm install이다. 이 명령어 뒤에 설치하고자 하는 구체적인 버전 번호를 지정하면 된다. 예를 들어, fnm install 18.20.0을 실행하면 해당 버전의 Node.js가 다운로드되어 시스템에 설치된다.
설치 시 특정 버전 번호를 완전히 입력하지 않아도 된다. fnm은 부분 일치를 지원하여 사용자가 입력한 접두사에 맞는 최신 버전을 자동으로 선택한다. 예를 들어, fnm install 18 명령어를 실행하면 사용 가능한 버전 중 18.x.x 시리즈의 가장 최신 안정 버전이 설치된다. 이 기능은 LTS(장기 지원) 버전을 빠르게 설치할 때 특히 유용하다. fnm install --lts 명령어를 사용하면 현재 최신 LTS 버전을 한 번에 설치할 수 있다.
원격 저장소에서 사용 가능한 모든 Node.js 버전 목록을 확인하려면 fnm ls-remote 명령어를 사용한다. 이 명령어는 공식 Node.js 릴리스 채널에서 제공하는 모든 버전(안정판, LTS, 최신 기능 포함 버전 등)을 나열하여 사용자가 설치할 버전을 선택하는 데 도움을 준다. 한 번에 여러 버전을 설치하는 것도 가능하며, 각 버전은 시스템 내 별도의 디렉터리에 독립적으로 관리된다.
명령어 | 설명 | 예시 |
|---|---|---|
| 특정 Node.js 버전 설치 |
|
| 최신 LTS 버전 설치 |
|
| 설치 가능한 모든 원격 버전 목록 표시 |
|
| 현재 시스템에 설치된 버전 목록 확인 |
|
설치가 완료되면 fnm ls 명령어로 로컬에 성공적으로 설치된 모든 Node.js 버전 목록을 확인할 수 있다. 이는 프로젝트별로 필요한 다른 버전을 관리하거나, 기본으로 사용할 버전을 설정하기 전에 현재 상태를 점검하는 데 도움이 된다.
4.2. 버전 전환
4.2. 버전 전환
fnm에서 Node.js 버전을 전환하는 가장 기본적인 방법은 fnm use 명령어를 사용하는 것이다. 이 명령어는 현재 셸 세션에서만 사용할 Node.js 버전을 변경하며, 시스템 전체에 영향을 주지 않는다. 사용하려는 버전이 이미 fnm install 명령으로 설치되어 있어야 하며, 버전 번호나 사전에 설정한 별칭을 인자로 전달하면 된다. 예를 들어, fnm use 18 또는 fnm use lts와 같이 실행할 수 있다. 현재 활성화된 버전을 확인하려면 fnm current 명령을 사용한다.
보다 편리한 자동 전환 기능을 활용하려면 셸 설정 시 fnm env 명령에 --use-on-cd 옵션을 추가해야 한다. 이 옵션을 활성화하면, 사용자가 프로젝트 루트 디렉터리로 이동(cd)할 때 해당 디렉터리에 존재하는 .node-version 또는 .nvmrc 파일을 자동으로 읽어 지정된 Node.js 버전으로 전환한다. 이는 여러 다른 버전의 Node.js를 사용하는 프로젝트를 오가며 작업할 때 매우 유용하다. --version-file-strategy=recursive 옵션을 함께 사용하면, 현재 디렉터리에서 상위 디렉터리로 거슬러 올라가며 버전 파일을 찾아 적용하기 때문에 하위 디렉터리에서도 자동 전환이 정상적으로 동작한다.
특정 버전을 기본(default)으로 설정하여 새로운 셸 세션이 시작될 때 자동으로 사용되게 할 수도 있다. 이는 fnm default <version> 명령으로 설정하며, 예를 들어 fnm default 20을 실행하면 이후 새로 열리는 모든 터미널에서 Node.js 20 버전이 기본으로 활성화된다. 이 기본 설정은 fnm use 명령을 통해 현재 세션에서 임시로 다른 버전을 사용하더라도 영구적으로 변경되지 않는다.
4.3. 기본 버전 설정
4.3. 기본 버전 설정
fnm default 명령어를 사용하면 시스템 전체에서 사용할 기본 Node.js 버전을 설정할 수 있다. 이 명령어는 특정 버전에 default라는 별칭(Alias)을 부여하는 역할을 한다. 설정된 기본 버전은 새로운 셸 세션이 시작될 때나, 프로젝트별 .node-version 파일이 없는 디렉토리에서 자동으로 사용된다.
기본 버전을 설정하는 구문은 fnm default <버전>이다. 여기서 <버전>은 fnm ls 명령어로 확인한 설치된 버전 번호(예: 18.19.0)나 lts, latest 같은 키워드, 또는 사용자가 미리 정의한 다른 별칭이 될 수 있다. 예를 들어, fnm default 20.15.0을 실행하면 이후 모든 터미널 세션에서 Node.js 20.15.0 버전이 기본으로 활성화된다.
이 기능은 주로 가장 자주 사용하거나 프로덕션 환경에 맞는 안정적인 LTS 버전을 시스템 기본값으로 지정할 때 유용하다. 기본 버전 설정은 전역적이므로, 특정 프로젝트 디렉토리 내부에 .node-version 파일이 있다면 해당 프로젝트에서는 파일에 명시된 버전이 우선적으로 적용된다. 이는 fnm의 프로젝트별 버전 관리 기능과 충돌하지 않으며, 함께 사용되어 효율적인 워크플로우를 구성한다.
4.4. 설치된 버전 목록 확인
4.4. 설치된 버전 목록 확인
fnm ls 명령어를 사용하면 Fast Node Manager를 통해 현재 시스템에 설치된 모든 Node.js 버전 목록을 확인할 수 있다. 이 명령을 실행하면 각 버전 옆에 별표(*)로 표시된 현재 활성화된 버전을 포함하여 설치된 모든 버전이 표시된다.
설치된 버전을 확인하는 것은 프로젝트 간에 Node.js 버전을 전환하거나, 시스템 정리를 위해 오래된 버전을 제거하기 전에 필수적인 단계이다. fnm ls 명령은 간단한 목록을 제공하여 사용자가 어떤 버전을 사용할 수 있는지 빠르게 파악할 수 있게 한다. 이는 특히 여러 프로젝트를 동시에 관리하는 개발자에게 유용하다.
명령어 | 설명 |
|---|---|
| 로컬에 설치된 모든 Node.js 버전을 나열한다. |
|
|
fnm current 명령어는 현재 활성화된 Node.js 버전만을 빠르게 확인하고 싶을 때 사용할 수 있다. 이는 현재 셸 세션에서 실제로 사용 중인 버전이 무엇인지 확인하는 데 유용하다.
5. 프로젝트별 버전 관리
5. 프로젝트별 버전 관리
fnm은 프로젝트 루트 디렉터리에 .node-version 또는 .nvmrc 파일을 생성하여 프로젝트별로 사용할 Node.js 버전을 지정할 수 있다. 이 파일에는 사용할 버전(예: v18.3.0)을 한 줄로 기록하면 된다. 셸 설정 시 fnm env 명령에 --use-on-cd 플래그를 추가하면, 해당 프로젝트 디렉터리로 이동(cd)할 때 자동으로 지정된 버전으로 전환되는 편리한 기능을 사용할 수 있다.
또한 --version-file-strategy=recursive 옵션을 함께 사용하면, 하위 디렉터리에서도 상위 디렉터리의 버전 파일을 인식하여 동일한 Node.js 버전을 사용할 수 있다. 이 방식은 nvm과의 호환성을 유지하면서도 더 빠르고 간편한 경험을 제공한다. 프로젝트 팀원 간 동일한 개발 환경을 구성하는 데 유용하며, JavaScript 프레임워크나 라이브러리의 호환성 문제를 방지할 수 있다.
명령어 예시 | 설명 |
|---|---|
| 현재 디렉터리에 프로젝트용 버전 파일 생성 |
|
|
| 현재 디렉터리의 버전 파일을 읽어 해당 버전 사용 |
이러한 프로젝트별 버전 관리는 소프트웨어 개발 워크플로우를 표준화하고, 버전 관리 시스템과 함께 사용되어 협업 효율성을 높이는 데 기여한다.
6. 기타 명령어
6. 기타 명령어
fnm은 기본적인 Node.js 버전 설치 및 전환 외에도 다양한 유틸리티 명령어를 제공한다. 이러한 명령어들은 설치된 버전을 관리하거나, 셸 환경을 최적화하는 데 유용하다.
주요 관리 명령어로는 fnm ls를 통해 현재 시스템에 설치된 모든 Node.js 버전 목록을 확인할 수 있다. fnm current 명령어는 현재 활성화된 Node.js 버전을 보여준다. 특정 버전을 완전히 제거하려면 fnm uninstall <버전> 명령을 사용한다. 또한, fnm alias <버전> <별칭> 명령으로 긴 버전 번호 대신 사용자 정의 별칭을 지정할 수 있으며, fnm default <버전>은 별칭 중 가장 자주 사용되는 default 별칭을 설정하는 단축 명령이다. 설정된 별칭을 제거할 때는 fnm unalias <별칭>을 사용한다.
셸 통합과 관련된 명령어도 있다. fnm env는 도구의 환경 변수를 출력하며, 이 출력을 셸 설정 파일에서 평가(eval)함으로써 fnm을 정상적으로 사용할 수 있다. --use-on-cd 및 --version-file-strategy와 같은 플래그를 추가하면 프로젝트 디렉터리 이동 시 자동으로 버전을 전환하는 고급 기능을 활성화할 수 있다. 또한, fnm completions --shell <셸_이름> 명령을 실행하면 해당 셸(예: bash, zsh, fish, PowerShell)에 대한 명령어 자동 완성 스크립트를 생성하여 개발 편의성을 높일 수 있다.
7. 비교
7. 비교
7.1. nvm과의 비교
7.1. nvm과의 비교
fnm과 nvm은 모두 Node.js 버전 관리자로서 Node.js의 여러 버전을 설치하고 전환하는 기능을 제공한다. 그러나 두 도구는 설계 철학, 성능, 지원 플랫폼에서 뚜렷한 차이를 보인다.
가장 큰 차이점은 개발 언어와 이로 인한 성능 및 크로스 플랫폼 지원이다. fnm은 Rust로 작성되어 매우 빠른 실행 속도와 즉각적인 시작 시간을 자랑한다. 반면 nvm은 Bash 스크립트로 작성되어 상대적으로 느린 속도를 보일 수 있다. 또한, fnm은 Windows, macOS, Linux를 모두 공식 지원하는 진정한 크로스 플랫폼 도구이다. 이에 비해 원본 nvm은 주로 macOS와 Linux에서만 작동하며, Windows 사용자는 별도의 포트인 'nvm-windows'를 사용해야 하는데, 이 프로젝트는 최근 몇 년간 유지보수가 중단된 상태이다.
사용성 측면에서도 차이가 있다. fnm은 .nvmrc 파일과 자체 .node-version 파일을 모두 지원하여 nvm 사용자에게 원활한 전환을 제공한다. 특히 --use-on-cd 옵션을 통해 프로젝트 디렉토리로 이동할 때 자동으로 해당 버전으로 전환되는 기능은 개발자 워크플로우를 크게 간소화한다. 설치 과정도 fnm이 더 간단한 경우가 많으며, 단일 바이너리 파일로 제공되어 의존성 문제가 적다. 반면 nvm은 더 오랜 기간 사용되어 왔으며, 커뮤니티와 자료가 풍부하다는 장점이 있다.
비교 항목 | fnm (Fast Node Manager) | nvm (Node Version Manager) |
|---|---|---|
개발 언어 | Rust | Bash |
성능 | 매우 빠름 (빠른 실행 속도 강조) | 상대적으로 느림 |
크로스 플랫폼 지원 | Windows, macOS, Linux 공식 지원 | macOS, Linux (원본), Windows는 별도 포트(nvm-windows) 필요 |
Windows 지원 상태 | 공식적이고 활발한 유지보수 | nvm-windows 프로젝트 유지보수 중단 상태 |
자동 버전 전환 ( | 지원 | 미지원 (수동으로 |
버전 파일 지원 |
|
|
설치 용이성 | 단일 바이너리, 간단한 스크립트 | 시스템에 따라 복잡할 수 있음 |
8. 여담
8. 여담
fnm은 Rust로 작성된 Node.js 버전 관리자로, 빠른 속도와 간결함을 강점으로 내세운다. 기존 nvm과 NVM-Windows의 한계를 극복하고자 개발되었다. 특히 크로스 플랫폼 지원은 Windows, macOS, Linux 사용자 모두에게 동일한 경험을 제공한다는 점에서 큰 장점으로 평가받는다.
fnm의 등장 배경에는 기존 도구들의 운영체제별 분리와 유지보수 문제가 있다. NVM-Windows는 개발이 중단된 상태였고, nvm은 macOS와 Linux에만 국한되어 있었다. fnm은 이러한 문제를 해결하며, Rust의 성능 덕분에 버전 전환 및 설치 속도가 현저히 빠르다. 또한 쉘 환경 변수 충돌 같은 기존 도구에서 발생하던 문제들을 더 우아하게 처리한다고 알려져 있다.
사용자 경험 측면에서 fnm은 자동 버전 전환 기능이 돋보인다. 프로젝트 루트에 .node-version 또는 .nvmrc 파일이 있으면, 사용자가 해당 디렉토리로 이동(cd)할 때 지정된 Node.js 버전으로 자동 전환된다. 이 기능은 --use-on-cd 플래그를 통해 활성화할 수 있어, 여러 프로젝트를 오가며 작업하는 개발자의 생산성을 크게 향상시킨다.
fnm은 Node.js 공식 다운로드 페이지에서도 기본 추천 도구로 소개될 만큼 그 유용성이 널리 인정받고 있다. 개발자 커뮤니티에서는 빠른 속도, 간편한 설치, 그리고 운영체제를 가리지 않는 일관된 동작을 높이 평가하며, nvm에서 fnm으로의 전환을 권장하는 목소리가 많다.
