ServBay에서 pnpm 활성화 및 사용 방법
pnpm
은 기존 패키지 매니저인 npm
과 yarn
에서 발생하는 다양한 의존성 관리 문제를 효과적으로 해결하기 위해 설계된, 현대적이고 효율적인 Node.js 패키지 관리 도구입니다. pnpm은 콘텐츠 주소 지정 파일 시스템과 하드링크, 심볼릭 링크 기술을 접목하여 디스크 공간 점유를 크게 줄이고 설치 속도를 대폭 향상시킵니다. ServBay를 활용해 Node.js 개발을 진행하는 개발자라면, pnpm을 익혀 두면 프로젝트 의존성 관리를 훨씬 더 효율적으로 할 수 있습니다.
ServBay에서 제공하는 Node.js 패키지에는 corepack
이 기본 포함되어 있습니다. corepack은 Node.js 공식 실험적 도구로, 프로젝트별로 필요한 특정 패키지 매니저(npm, yarn, pnpm 등)의 버전을 제어하고 설치를 지원합니다. ServBay의 Node.js를 설치한 뒤에는, corepack 명령어를 통해 pnpm을 활성화할 수 있습니다.
pnpm 활성화하기
만약 pnpm
명령어를 바로 사용할 수 없는 경우, corepack을 통해 pnpm이 아직 활성화되지 않았기 때문일 수 있습니다. 아래 단계를 따라 진행하세요.
터미널(terminal) 앱을 엽니다.
아래 명령어를 입력해 corepack으로 pnpm을 활성화합니다:
bashcorepack enable pnpm
1명령이 성공적으로 실행되면 별다른 출력 없이 완료됩니다. 이는 corepack이 pnpm 커맨드를 시스템에 연결했음을 의미합니다.
pnpm이 정상적으로 활성화되었는지 확인하고 버전을 확인합니다:
bashpnpm -v
1위 명령어를 실행하면, 예를 들어 다음과 같은 버전 번호가 출력됩니다:
bash9.1.0
1터미널에 버전 정보가 표시되면 pnpm을 사용할 준비가 완료된 것입니다.
corepack 다운로드 안내
pnpm 명령어를 사용할 때 아래와 같은 안내 메시지가 나타날 수 있습니다. 이는 corepack이 사용해야 할 pnpm의 지정 버전을 다운로드하거나 업데이트하려고 하는 과정입니다. corepack의 정상적인 동작이므로 안내에 따라 진행하면 됩니다.
bash
$ pnpm -v
! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-9.0.6.tgz
? Do you want to continue? [Y/n]
1
2
3
2
3
Y
를 입력하고 엔터를 누르면 corepack이 pnpm을 내려받고, 이후 명령어 실행이 정상적으로 이어집니다. 다운로드가 완료되면 버전 정보(또는 입력한 pnpm 명령 결과)가 확인됩니다.
pnpm의 핵심 장점과 사용 예시
pnpm의 가장 큰 특징은 의존성을 효율적으로 관리할 수 있도록 고안된 아키텍처입니다. 모든 패키지는 전역의 콘텐츠 주소 지정 저장소에 한 번만 보관되며, 각 프로젝트에서는 필요한 의존성에 대한 하드링크를 생성합니다. 프로젝트의 node_modules
디렉토리는 심볼릭 링크로 연결되어 평평한 구조를 형성하지만, 기존 npm에서 발생하는 '고스트 의존성' 문제가 발생하지 않도록 pnpm은 프로젝트에서 직접 명시한 모듈만 직접 참조할 수 있도록 엄격하게 제한합니다.
이러한 방식은 다음과 같은 주요 이점을 제공합니다:
- 디스크 공간 절약: 서로 다른 프로젝트 간에도 동일 버전의 의존성 파일을 공유하므로, 중복 저장이 발생하지 않습니다.
- 빠른 설치 속도: 대부분의 경우 전역 저장소에 이미 의존성 파일이 있으므로, 다운로드나 복사 대신 링크만 생성되어 설치가 매우 빠릅니다.
- 엄격한 의존성 구조: 고스트 의존성 현상을 방지해, 프로젝트 의존성 관계가 더욱 명확하고 직관적으로 관리됩니다.
아래는 ServBay 환경에서 자주 사용되는 pnpm 기본 명령 예시입니다.
프로젝트가 ServBay 웹사이트 루트 디렉터리 하위, 예를 들어 /Applications/ServBay/www/my-servbay-app
에 위치한다고 가정해 보겠습니다.
프로젝트 의존성 설치
프로젝트 디렉터리로 이동한 뒤, package.json
에 정의된 모든 의존성을 설치하려면:
bash
cd /Applications/ServBay/www/my-servbay-app
pnpm install
1
2
2
pnpm은 전역 저장소를 확인하여 누락된 패키지를 내려받고, 프로젝트의 node_modules
에 하드링크 및 심볼릭 링크를 생성합니다.
새 의존성 패키지 추가
프로젝트에 새 의존성(예: lodash
)을 추가하고자 할 때:
bash
pnpm add lodash
1
전역 저장소에 없다면 lodash 패키지를 다운로드하고, 링크를 생성하며, 프로젝트의 package.json
과 pnpm-lock.yaml
을 자동 업데이트합니다.
의존성 패키지 제거
더 이상 불필요한 의존성(예: lodash
)을 삭제하려면:
bash
pnpm remove lodash
1
해당 패키지를 프로젝트 의존성에서 제거한 후, package.json
과 pnpm-lock.yaml
파일이 업데이트됩니다.
스크립트 실행
pnpm은 package.json
에 정의된 scripts
필드의 스크립트를 실행할 수 있습니다:
bash
pnpm run dev
# 또는 더 짧게
pnpm dev
1
2
3
2
3
패키지 명령 실행 (pnpx)
기존의 npx
처럼, pnpm도 pnpx
(혹은 pnpm exec
)를 제공하여, 프로젝트의 로컬 node_modules/.bin
에 설치된 명령어를 별도의 글로벌 설치 없이 바로 실행할 수 있게 해줍니다:
bash
pnpm exec webpack --version
# 또는 더 짧게
pnpx webpack --version
1
2
3
2
3
요약
corepack enable pnpm
명령만으로도 ServBay의 Node.js 환경에서 pnpm을 손쉽게 활성화할 수 있습니다. pnpm의 강력하고 효율적인 의존성 관리로, Node.js 프로젝트의 의존성 설치 속도와 개발 효율성을 크게 높이는 것은 물론 디스크 공간도 확실히 절약할 수 있습니다. 최상의 개발 경험을 추구하는 ServBay 사용자에게 pnpm은 강력히 추천하는 도구입니다.