원문 캡처 · github.com
원문 캡처 · github.com

ni는 프로젝트의 잠금 파일이나 packageManager 항목을 바탕으로 npm, Yarn, pnpm, Bun, Deno, nub, aube 가운데 사용할 패키지 관리자를 판별해 명령을 실행하는 도구다. 패키지 설치뿐 아니라 실행·업데이트·삭제 등에도 짧은 공통 명령을 쓸 수 있다.

설치는 npm i -g @antfu/ni로 안내한다. ni는 설치와 의존성 추가를, nr은 프로젝트 스크립트 실행을, nlx는 패키지 다운로드 후 실행을 맡는다. nup은 업데이트, nun은 삭제, nci는 클린 설치, nd는 의존성 정리, na는 현재 패키지 관리자를 호출하는 별칭이다. 일부 명령에는 대화형 선택 기능도 있다.

ni는 yarn.lock, pnpm-lock.yaml, package-lock.json, bun.lock 등 잠금 파일을 감지한다. packageManager 항목이 있으면 이를 기준으로 삼는다. 따라서 프로젝트의 패키지 관리자 판별을 위해 잠금 파일을 사용하는 방식을 전제로 한다.

v29.0.0부터는 pnpm·Yarn Berry·Bun 워크스페이스의 카탈로그도 지원한다. 카탈로그가 감지되면 새 의존성의 버전 고정 대신 catalog: 참조를 package.json에 기록하고 워크스페이스 카탈로그를 갱신한다. -D는 개발 의존성 영역에 적용되며 -w는 워크스페이스 루트를 대상으로 한다. 기존 카탈로그 항목만 재사용하거나 카탈로그 기능을 끄려면 ~/.nirc 또는 환경 변수 NI_CATALOG를 설정할 수 있다.

패키지 관리자가 설치되지 않았을 때 자동 설치를 사용하려면 NI_AUTO_INSTALL=true로 설정한다. 기본 설정과 환경 변수로 대체 패키지 관리자, 전역 설치용 관리자, 카탈로그 모드 등을 지정할 수 있다. Node.js 22 이상에서는 runAgent=node로 스크립트 실행에 node --run을 사용하도록 설정할 수 있다.

Windows PowerShell에는 ni가 New-Item의 기본 별칭으로 등록돼 있어 충돌할 수 있다. 현재 세션에서 별칭을 제거하거나 PowerShell 프로필에 제거 명령을 추가해야 한다. 프로젝트 문서와 설치 방법은 ni 저장소에서 확인할 수 있다.