기타

npm에서 pnpm으로 마이그레이션하기

초코민트냠냠 2022. 10. 6. 11:18
반응형

pnpm의 간단한 설명을 하자면 npm의 단점을 보완한 패키지 매니저입니다.

 

npm을 사용하여 개발하다 보면 여러 프로젝트에서 중복되는 의존성이 node_modules마다 중복으로 설치됩니다. 이것을 해결하기 위해서 프로젝트에 설치하는것이 아니라 별도의 모듈 디렉토리에 1개만 설치하고 사용할 때는 모듈 디렉에 링크하여 사용합니다. 이런 방식으로 저장소를 절약하고 빠른 install 속도를 구현하였습니다.

https://pnpm.io/motivation

 

Motivation | pnpm

Saving disk space and boosting installation speed

pnpm.io

 

1. pnpm 설치하기 

npm이 있으므로 간단히 pnpm을 설치할 수 있습니다. 다른 설치방법도 많습니다.

https://pnpm.io/installation

 

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으로 마이그레이션이 끝났습니다! 

 

자세한 명령어는 다음 링크를 참조해주세요.

https://pnpm.io/pnpm-cli

 

pnpm CLI | pnpm

Differences vs npm

pnpm.io

 

반응형