피드로 돌아가기
npm 1.0: Global vs Local installation
Node.js BlogNode.js Blog
Backend

npm 1.0이 전역/로컬 설치 구조를 분리하여 의존성 관리의 명확성 확보

npm 1.0: Global vs Local installation

2011년 3월 24일5beginner

Context

npm 0.x에서는 bundle 명령어로 로컬 설치를 지원했으나 신뢰성이 낮았고, 활성화/비활성화 메커니즘이 혼란스러웠다. 패키지 설치 디렉토리 구조를 단순화할 필요가 있었다.

Technical Solution

  • 전역 설치 방식 도입: {prefix}/lib/node_modules에 모듈 설치, {prefix}/bin에 실행 파일 배치, {prefix}는 일반적으로 /usr/local
  • 로컬 설치 방식 도입: 현재 작업 디렉토리 하위 ./node_modules에 패키지 설치, 실행 파일은 ./node_modules/.bin/ 배치
  • 설치 위치 제어: -g 커맨드라인 스위치로 전역/로컬 설치 선택 가능하게 통합
  • 패키지 범위 자동 감지: git 저장소처럼 node_modules 폴더가 있는 패키지 내 어디서나 npm 명령 실행 시 자동으로 해당 패키지의 로컬 node_modules 참조
  • npm 스크립트 실행 시 PATH 우선순위 조정: ./node_modules/.bin을 PATH 환경변수의 첫 번째 항목으로 설정하여 로컬 의존성 바이너리 자동 인식

Key Takeaway

전역/로컬 설치의 명확한 분리와 자동 범위 감지는 프로젝트 의존성 관리의 복잡성을 줄이고, 개발자가 require() 또는 CLI 사용 목적에 따라 의도를 명시적으로 표현하도록 유도한다.


Node.js 프로젝트에서 npm

1.0 이상을 사용할 때, require()로 사용할 라이브러리는 프로젝트 루트에 로컬 설치하고, CLI 도구(coffee-script, express 등)는 전역 설치하거나 로컬과 전역 모두 설치하면 의존성 관리의 명확성을 확보할 수 있다.

원문 읽기