# Node 버전 관리자 5종 비교 : NVM, N, FNM, Volta, PNPM

> Clean Markdown view of GeekNews topic #14788. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=14788](https://news.hada.io/topic?id=14788)
- GeekNews Markdown: [https://news.hada.io/topic/14788.md](https://news.hada.io/topic/14788.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-05-13T10:36:02+09:00
- Updated: 2024-05-13T10:36:02+09:00
- Original source: [pavel-romanov.com](https://pavel-romanov.com/5-node-version-managers-compared-which-is-right-for-you)
- Points: 18
- Comments: 4

## Topic Body

- 주요 비교 항목: 크로스플랫폼, 초기 설정, 노드 버전 소스, 일일 사용량   
  
### Node Version Manager (NVM)  
- GitHub 리포지토리 별 75.2k로 Node 버전 관리에 가장 인기 있는 솔루션  
- 초기에 등장하여 커뮤니티에서 큰 인기를 얻었음  
- 완전한 Windows 지원은 없으며, GitBash, Cygwin, WSL 등에서 작동함  
- Windows용 별도 패키지인 nvm-windows가 있으나 NVM 자체는 아님  
- POSIX 쉘(bash, zsh)만 지원하여 Fish 등의 사용자는 제외됨  
- 설치는 간단한 명령어로 가능함  
- `.nvmrc` 파일을 통해 사용할 Node.js 버전을 이해할 수 있음  
- `nvm use` 명령어는 현재 쉘에서만 Node.js 버전을 설정하므로, 프로젝트 폴더를 떠나도 버전이 유지됨  
- 현재 쉘의 Node.js 버전과 프로젝트에 필요한 버전을 항상 인지해야 하는 부담이 있음  
- 수동으로 모든 Node.js 버전을 관리하는 것보다는 낫지만, 완벽한 통합과는 거리가 있음  
  
### N  
- GitHub 별 18.5k로 인기 있는 Node.js 버전 관리자  
- 크로스 플랫폼이 아니며, NVM보다 더 많은 제한이 있음  
- Windows 네이티브 쉘, Git for Windows Bash, Cygwin DLL에서 작동하지 않음  
- NPM이나 Brew를 통해 직접 설치하거나, sh 스크립트를 다운로드하여 설치할 수 있음  
- package.json의 "engines" 섹션에서 직접 Node 버전을 감지할 수 있음  
- 다른 프로젝트에 정확한 Node.js 버전을 사용하려면 직접 추적해야 하는 문제가 있음  
- "전역" Node.js 버전을 관리하므로, 쉘을 닫은 후에도 마지막 프로젝트에 사용한 Node 버전이 남아있음  
  
### Fast Node Manager (FNM)  
- Rust로 작성된 Node 버전 관리자로, GitHub 별 15.2k  
- 목록에서 첫 번째 크로스 플랫폼 Node 버전 관리자임  
- 다른 패키지 설치 없이 Windows에서 실행됨  
- 설치 과정이 명확하고 직관적임  
- 쉘마다 Node.js 버전을 관리하며, 프로젝트에 지정된 버전이 없는 경우 "기본" 버전을 사용함  
- 폴더 기반으로 Node.js 버전을 자동 전환하는 기능이 있으나, 설정이 필요함  
- 자동 전환이 제대로 작동하려면 필요한 Node.js 버전을 미리 설치해야 함  
- `.node-version`이나 `.nvmrc` 파일에서만 Node 버전을 감지할 수 있음  
  
### Volta  
- GitHub 별 10k로 버전 관리자 세계에서 라이징 스타  
- Rust로 작성되었으며, 크로스 플랫폼임  
- Unix 기반 시스템에서 설치 과정이 매끄러움  
- Node.js 버전을 설정할 때 추가 파일이 필요 없음  
- package.json에서 직접 설정을 가져옴  
- "engines" 섹션이 Volta 설정 바로 옆에 있어, 버전을 쉽게 동기화할 수 있음  
- 툴체인 관리가 가능하여, Node.js 버전뿐만 아니라 Yarn 버전까지 동적으로 전환할 수 있음  
- 설치 명령어를 실행할 때마다 Node.js와 Yarn 버전이 선언된 것과 일치하도록 보장함  
  
### PNPM  
- NPM이나 Yarn의 대안으로 여겨지지만, Node.js 버전도 관리할 수 있음  
- 크로스 플랫폼이며, 모든 플랫폼에서 동일한 Node.js 버전 관리 경험을 제공함  
- Node 버전 관리가 핵심 기능이 아니므로, NPM이나 Yarn과 함께 사용하기 어려움  
- PNPM으로 설치한 Node.js는 Corepack이 포함되지 않음  
- Node.js 버전을 전역으로만 관리할 수 있으며, 쉘마다 설정할 수 없음  
- 프로젝트 간 이동 시 Node.js 버전을 동적으로 전환하지 않으므로, 직접 추적해야 함  
  
### 결론  
- Node.js 버전 관리자는 많은 발전을 거듭해 왔음  
- NVM은 가장 오래되고 인기 있는 솔루션이었으며, 여전히 그러함  
- 하지만 생태계는 진화하고 있으며, N, FNM, Volta 등 다양한 도구가 등장했음  
- 현재로서는 Volta가 가장 기능이 풍부하고 완벽한 Node.js 버전 관리자로 보임  
- Volta는 크로스 플랫폼이며, 일상적인 사용에서 매끄러운 경험을 제공하고, 프로젝트에서 사용하는 다른 도구들까지 관리해줌

## Comments



### Comment 25403

- Author: firea32
- Created: 2024-05-20T21:59:26+09:00
- Points: 1

따로 패키지로 관리하려고 배우는게 번거로워서 그냥 brew unlink && brew link node@14 이렇게 쓰고있네요.

### Comment 25207

- Author: halfenif
- Created: 2024-05-14T08:28:35+09:00
- Points: 1

모든 것이 너무 많아서 진지하게 배우고 싶은 마음이 "미약함"  
  
예전 FileForge에서 윈도우용 실행파일 뒤적거리던것을 떠올리면, 편해도 이렇게 편해도 되는가 싶기는 함.

### Comment 25197

- Author: surfindia
- Created: 2024-05-13T14:39:49+09:00
- Points: 2

저는 버전 매니저에 기대하는 것이 성능이라기보다는 범용성인데요. 그런 면에서 https://github.com/asdf-vm/asdf 를 충분히 만족하면서 사용하고 있습니다. 플러그인에 따라 node 뿐 아니라 python, ruby, golang 등을 모두 관리할 수 있어서요. direnv plugin 도 잘 쓰고 있습니다.

### Comment 25190

- Author: kroisse
- Created: 2024-05-13T11:02:35+09:00
- Points: 1

Nodenv(https://github.com/nodenv/nodenv)도 제법 괜찮은 대안인데 언급이 없는 점이 아쉽네요. GitHub star 2.2k라 별로 유명하지 않다고 여겨져서 제외된 듯합니다.  
  
셸 스크립트 기반이라 Windows 호환성이 취약한 건 NVM이나 N과 유사하고, 대신 글로벌 Node.js 버전과 별개로 폴더 기반으로 Node.js 버전을 지정할 수도, 특정 버전의 Node.js을 사용하는 셸 환경을 새로 띄울 수도 있습니다.
