Node.js 패키니매니저 yarn에서 pnpm으로 마이그레이션

Node.js 패키니매니저 yarn에서 pnpm으로 마이그레이션

tags
Nodejs
pnpm
AI-generated
AI-generated
Updated Time
Dec 1, 2024 03:55 AM
Published
Nov 27, 2024 01:29 AM
Created Date
Nov 27, 2024
Font
slug
Date
author
UJ
category
Dev
Social Image
Description
tableKey
first-row
키워드
자바스크립트를 자주 사용할 일은 없지만 node를 사용했던 적도 있고 블로그 프론트엔드가 next.js여서 yarn을 간간히 이용 했었다. 이번에 블로그 리뉴얼 하며 원본 레포대로 패키지 관리자도 pnpm으로 변경하기로.

yarn에서 pnpm으로 마이그레이션

  1. corepack을 사용한 pnpm 설치
    1. corepack enable # corepack 활성화
      corepack은 Node.js에 내장된 패키지 매니저 관리 도구로, corepack 사용이 필수는 아니지만 Yarn과 pnpm의 버전을 자동으로 관리하고, 프로젝트에서 지정된 버전의 패키지 매니저를 사용할 수 있게 해준다.
  1. 프로젝트의 패키지 관리자 활성화
    1. corepack prepare --activate
      위 명령어는 아래처럼 package.json에 설정한것을 기준으로 설치하기때문에
      { "packageManager": "pnpm@9.0.0" }
      위처럼 버전을 명시하지않았을경우 에러가 발생
      다시 아래처럼 버전을 명시하거나
      corepack prepare pnpm@latest --activate
      이렇게 입력해도 설치 의사를 묻는다.
      pnpm
      pnpm-lock.yml 파일이 이미 존재하면 버전확인 가능
      pnpm --version
  1. node_modules 제거후 package.json을 기준으로 프로젝트 의존성 재설치(pnpm-lock.yaml생성)
    1. rm -rf node_modules pnpm install
      의존성을 갱신할때도 사용하며 , 이미 설치된 의존성은 pnpm-lock.yaml 파일을 기준으로 관리한다.
  1. 기존 yarn 관련 파일 삭제
      • .yarn 폴더, yarn.lock
  1. 패키지 매니저 pnpm으로 전환 다른 패키지 매니저의 lock 파일(yarn.lock 또는 package-lock.json)을 pnpm 형식으로 변환(pnpm-lock.yaml 파일 생성)
    1. pnpm import
  1. 사용하지 않는 패키지 매니저 비활성화
    1. corepack disable yarn
      이후 yarn 명령을 사용한다면 Corepack이 더 이상 yarn의 버전을 관리하지 않으므로, 시스템에 설치된 yarn 버전이나 글로벌로 설정된 yarn을 사용한다.

pnpm 기본 명령어

기본명령어는 대체로 yarn과 유사하다.
작업
pnpm
Yarn
프로젝트 초기화
pnpm init
yarn init
특정 패키지 설치 (최초 설치)
pnpm install
yarn install
패키지 설치 (패키지 이름 지정)
pnpm add [package]
yarn add [package]
개발 의존성 설치 (패키지 이름 지정)
pnpm add [package] --dev
yarn add [package] --dev
특정 의존성 제거
pnpm remove [package]
yarn remove [package]
의존성 업데이트
pnpm update or up
yarn upgrade

pnpm 기타 명령어

사용되지 않는 패키지 제거 package.json에 정의된 의존성 목록과 비교하여, 더 이상 필요하지 않은 패키지를 삭제 node_modules 디렉토리에서 필요 없는 패키지들을 제거할 때 사용 pnpm store prune과 다른것임을 유의해야 한다.
pnpm prune
프로덕션 의존성만 남기고 제거
pnpm prune --prod
pnpm prune은 모노레포 내의 모든 워크스페이스에 대해 재귀적으로 실행되지 않아 모노레포에서는 pnpm install --prod를 사용해야한다.
프로덕션 의존성만 설치. 이미 설치된 패키지는 제거
pnpm install --prod
캐시에서 수정된 패키지 확인
pnpm store status
불필요한 캐시 제거 pnpm의 패키지 저장소에서 사용되지 않는 패키지를 정리합니다. 이 명령어는 pnpm의 전역 저장소에서 사용되지 않는 패키지 버전을 제거하여 디스크 공간을 절약
pnpm store prune
프로젝트 배포
pnpm deploy

pnpm의 장점

  • pnpm은 yarn과 달리 패키지 캐시를 글로벌 캐시에서 관리하여 캐시된 패키지를 재사용 가능
  • pnpm은 패키지를 하드 링크로 관리하여 공간 절약과 설치 속도를 줄인다.
  • 의존성 중복을 방지한다.
 

기본 패키지 관리자도 괜찮다

패키지관리자의 선택에 대한 각자의 기준이 있을텐데, 아래처럼 기본 패키지관리자인 npm을 선호하는 분도 있다. PNPM과 YARN이 필요하지 않은 이유 | HackerNoon
관심 주제를 선택해주세요. 선택하지 않으면 모든 글을 구독합니다.