프로젝트 소개

`n`은 단순함을 위해 설계된 경량 BASH 기반 Node.js 버전 관리자입니다. 서브셸, 프로필 수정 또는 복잡한 API 없이 대화형 또는 명령줄 인수를 통해 여러 Node.js 버전을 다운로드, 설치 및 전환할 수 있습니다. ## 지원 플랫폼 `n`은 macOS, Linux(Windows Subsystem for Linux 포함) 및 기타 Unix 계열 시스템에서 실행됩니다. 네이티브 Windows 셸(예: PowerShell), Git for Windows BASH 또는 Cygwin DLL에서는 작동하지 않습니다. ## 설치 Node.js가 이미 설치된 경우 `n`을 설치하는 가장 쉬운 방법은 npm을 이용하는 것입니다: ```bash npm install -g n ``` 기본적으로 `n`은 `/usr/local`에 설치되며, 적절한 권한이 필요할 수 있습니다. 디렉토리 소유권 변경, 사용자 지정 `N_PREFIX` 위치 사용 또는 `sudo`로 실행하는 옵션이 있습니다. npm 없이 부트스트래핑하려면 `n`을 직접 다운로드하여 실행할 수 있습니다: ```bash curl -fsSL https://raw.githubusercontent.com/tj/n/master/bin/n | bash -s install lts ``` 타사 설치 프로그램은 macOS용 Homebrew(`brew install n`) 및 MacPorts(`port install n`), Linux/macOS용 `n-install`을 통해 사용할 수 있습니다. ## 주요 기능 - **대화형 선택**: `n`을 단독으로 실행하면 다운로드된 버전을 확인하고 화살표 키로 선택할 수 있습니다. - **버전 지정**: 전체 또는 부분 버전 번호(예: `4.9.1`, `8`, `v6.1`), `lts`, `latest`, `current` 같은 레이블 및 코드네임(`argon`, `boron`, `carbon`)을 지원합니다. - **자동 버전 감지**: `.n-node-version`, `.node-version`, `.nvmrc` 또는 `package.json`의 `engines` 필드를 읽습니다. - **캐시 관리**: 다운로드는 오프라인 재설치를 위해 캐시되며, `n ls`는 캐시된 버전을 나열하고, `n rm`은 특정 버전을 제거하며, `n prune`은 활성 버전을 제외한 모든 버전을 지웁니다. - **직접 실행**: `n run <version> <script>`는 특정 Node.js 버전으로 스크립트를 실행하고, `n exec <version> <command>`는 해당 버전의 `PATH`로 명령을 실행하며, `n which <version>`은 바이너리 경로를 표시합니다. - **npm 보존**: `--preserve` 또는 `N_PRESERVE_NPM`/`N_PRESERVE_COREPACK`을 사용하여 현재 npm/corepack 버전을 유지합니다. - **사용자 지정 미러**: `N_NODE_MIRROR` 또는 `N_NODE_DOWNLOAD_MIRROR`를 설정하여 대체 다운로드 소스(예: 중국 미러 또는 비공식 빌드)를 사용할 수 있습니다. - **아키텍처 재정의**: `--arch` 또는 `N_ARCH`를 사용하여 특정 바이너리를 선택합니다(예: Alpine용 `x64-musl`). - **환경 변수**: `N_PREFIX`는 설치 위치를 변경하고, `N_CACHE_PREFIX`는 캐시 위치를 변경하며, `NO_COLOR`/`CLICOLOR=0`은 ANSI 색상을 제어합니다. - **진단**: `n doctor`는 문제 해결을 돕습니다. ## 사용 예시 ```bash n 10.16.0 # 특정 버전 설치 n lts # 최신 LTS 설치 n ls-remote lts # 일치하는 원격 버전 나열 n ls # 캐시된 버전 나열 n rm 0.9.4 # 캐시된 버전 제거 n uninstall # 활성 Node.js 제거 (캐시 유지) n run 8.11.3 --debug some.js n exec 10 my-script --fast test n --offline 12 # 인터넷 없이 캐시된 버전 사용 ``` ## 작동 방식 `n`은 Node.js 타르볼을 캐시 폴더(기본값: `N_PREFIX/n/versions`)에 다운로드하고 활성 버전을 `bin`, `include`, `lib` 및 `share` 하위 디렉토리에 설치합니다. `--preserve`를 사용하지 않는 한 전역 npm 패키지를 수정하지 않습니다. 이 도구는 최소화되고 투명하게 설계되어, 간단한 버전 관리자를 선호하는 개발자에게 인기 있는 선택입니다.