노드 버전 매니저중 하나인 fnm이라는 것을 소개해보려 한다.
fnm이란?
fnm(Fast Node Manager)은 Rust로 작성된 빠르고 간단한 Node.js 버전 관리자입니다. 다양한 Node.js 버전을 쉽게 설치하고 전환할 수 있게 해줍니다.
특징
- Rust로 작성되어 매우 빠른 성능
- 크로스 플랫폼 지원 (Windows, macOS, Linux)
- 쉬운 설치 및 사용
- .nvmrc 파일 지원
- 자동 완성 기능
다른 node version manager와의 차이점
특징 | fnm | nvm | n |
---|---|---|---|
언어 | Rust | Bash | JavaScript |
속도 | 매우 빠름 | 보통 | 빠름 |
크로스 플랫폼 | O | X (Windows 미지원) | O |
.nvmrc 지원 | O | O | X |
설치 난이도 | 쉬움 | 보통 | 쉬움 |
설치방법
macOS (Homebrew 사용):
brew install fnm
Linux 및 macOS (curl 사용):
curl -fsSL https://fnm.vercel.app/install | bash
Windows (PowerShell 사용):
scoop install fnm
실행방법
설치 후 쉘 설정 파일에 다음 줄을 추가:
Bash:
eval "$(fnm env --use-on-cd)"
Fish:
fnm env --use-on-cd | source
PowerShell:
fnm env --use-on-cd | Out-String | Invoke-Expression
fnm 명령어
fnm list-remote
(별칭: ls-remote): 원격으로 사용 가능한 모든 Node.js 버전을 나열한다.fnm list
(별칭: ls): 로컬에 설치된 모든 Node.js 버전을 나열한다.fnm install <version>
: 새로운 Node.js 버전을 설치한다.fnm use <version>
: 특정 Node.js 버전으로 전환한다.fnm env
: fnm에 필요한 환경 변수를 출력하고 설정한다.fnm completions
: 쉘 자동 완성 스크립트를 stdout으로 출력한다.fnm alias <name> <version>
: 특정 버전에 별칭을 지정한다.fnm unalias <name>
: 지정된 별칭을 제거한다.fnm default <version>
: 특정 버전을 기본 버전으로 설정한다.fnm current
: 현재 사용 중인 Node.js 버전을 출력한다.fnm exec <command>
: fnm 컨텍스트 내에서 명령을 실행한다.fnm uninstall <version>
: 특정 Node.js 버전을 제거한다.fnm help [subcommand]
: 전체 도움말 메시지나 특정 하위 명령어에 대한 도움말을 출력한다.
fnm 옵션
--node-dist-mirror <NODE_DIST_MIRROR>
: Node.js 배포 미러 URL을 지정한다.- 기본값은 https://nodejs.org/dist 이다. (환경 변수: FNM_NODE_DIST_MIRROR)
--fnm-dir <BASE_DIR>
: fnm 설치의 루트 디렉토리를 지정한다. (환경 변수: FNM_DIR)--log-level <LOG_LEVEL>
: fnm 명령어의 로그 레벨을 설정한다.- 가능한 값: quiet, error, info(default) (환경 변수: FNM_LOGLEVEL)
--arch <ARCH>
: 설치된 Node 바이너리의 아키텍처를 오버라이드한다.- 기본값은 fnm 바이너리의 아키텍처이다. (환경 변수: FNM_ARCH)
--version-file-strategy <VERSION_FILE_STRATEGY>
: Node 버전을 해석하는 전략을 설정한다. 'fnm use' 또는 'fnm install'이 버전 없이 호출되거나, '--use-on-cd'가 평가 시 구성된 경우 사용된다.- 가능한 값:
- local: 현재 디렉토리 내에 정의된 Node의 로컬 버전 사용
- recursive: 현재 디렉토리 및 모든 상위 디렉토리에 정의된 Node 버전 사용 환경 변수: FNM_VERSION_FILE_STRATEGY (기본값: local)
- 가능한 값:
--corepack-enabled
: 각 새 설치에 대해 corepack 지원을 활성화합니다. 이는 fnm이 모든 Node.js 설치에서 'corepack enable'을 호출하게 한다. (환경 변수: FNM_COREPACK_ENABLED)--resolve-engines
: .node-version 또는 .nvmrc 파일이 없을 때 package.json의 engines.node 필드를 해석한다. 실험적 기능으로, 변경될 수 있다. (환경 변수: FNM_RESOLVE_ENGINES)-h, --help
: 도움말을 출력한다. (간단한 요약은 '-h'로 볼 수 있습니다)-V, --version
: fnm의 버전을 출력한다.
etc
- fnm은 .nvmrc 파일을 자동으로 인식하여 프로젝트별로 Node.js 버전을 쉽게 전환할 수 있다.
- 다른 버전 관리자에 비해 설치 공간을 적게 차지한다.
- 지속적으로 업데이트되고 있어 최신 Node.js 버전을 빠르게 지원한다.