pnpm의 간단한 설명을 하자면 npm의 단점을 보완한 패키지 매니저입니다.
npm을 사용하여 개발하다 보면 여러 프로젝트에서 중복되는 의존성이 node_modules마다 중복으로 설치됩니다. 이것을 해결하기 위해서 프로젝트에 설치하는것이 아니라 별도의 모듈 디렉토리에 1개만 설치하고 사용할 때는 모듈 디렉에 링크하여 사용합니다. 이런 방식으로 저장소를 절약하고 빠른 install 속도를 구현하였습니다.
Motivation | pnpm
Saving disk space and boosting installation speed
pnpm.io
1. pnpm 설치하기
npm이 있으므로 간단히 pnpm을 설치할 수 있습니다. 다른 설치방법도 많습니다.
npm i -g pnpm

2. 기존 node_modules 삭제하기
다음 코드를 실행합니다.
npx npkill

y를 눌러 진행합니다.

그러면 다음과 같은 화면이 나옵니다. 스페이스를 눌러 현재 디렉토리의 node_modules를 삭제하고 q를 눌러 종료합니다.
3. package.json 수정
pnpm만 사용 가능하게 합니다.
"scripts": {
"preinstall": "npx only-allow pnpm",
...
}
4. pnpm-workspace.yaml 만들기
pnpm-workspace.yaml을 만들어서 포함하거나 제외할 디렉토리를 명시합니다. 다음은 예시입니다.
packages:
# all packages in direct subdirs of packages/
- 'packages/*'
# all packages in subdirs of components/
- 'components/**'
# exclude packages that are inside test directories
- '!**/test/**'
5. pnpm import
pnpm import 를 실행합니다. pnpm-lock.yaml 파일이 생성됩니다.
pnpm import

6. package_lock.json 삭제
프로젝트 디렉토리의 package-lock.json을 삭제합니다. 이제 필요 없는 파일입니다. 혹시 yarn을 사용하셨다면 yarn-lock.json등 다른 lock파일이 있으면 삭제해줍니다.
rm ./package-lock.json
7. 의존성 설치
마지막으로 의존성을 설치해주면 됩니다. node_modules가 생성됩니다.
pnpm i

npnm으로 마이그레이션이 끝났습니다!
자세한 명령어는 다음 링크를 참조해주세요.
pnpm CLI | pnpm
Differences vs npm
pnpm.io
'기타' 카테고리의 다른 글
Mac mini 모니터링, 외부 접속 (Grafana, Prometheus, Node exporter) (0) | 2024.09.23 |
---|---|
MacOS SSH port 변경 (0) | 2024.09.16 |
brew 권한 문제 (Error: Permission denied) (0) | 2024.09.10 |
ts-node 로 TypeScript (*.ts)파일 실행하기 Unknown file extension ".ts" (3) | 2022.10.19 |