mason
mason-log.

mason

mason.

안녕하세요. mason 입니다.

tooling

npm, yarn, pnpm.

패키지 매니저 역할, lockfile, workspace, npm/yarn/pnpm 차이

패키지 매니저는 의존성 설치, 버전 고정, 스크립트 실행을 담당합니다. npm, yarn, pnpm은 같은 package.json을 쓰지만 node_modules 구조와 lockfile이 다릅니다.

📦 package.json 핵심

필드설명
dependencies프로덕션 런타임
devDependencies빌드, 테스트, lint
peerDependencies호스트가 제공해야 하는 패키지 (플러그인)
scriptsnpm run dev 등 단축 명령
enginesNode 버전 제약
  • semver: ^1.2.3 (minor/patch 허용), ~1.2.3 (patch만), exact 1.2.3

🔒 lockfile

도구lockfile
npmpackage-lock.json
yarnyarn.lock
pnpmpnpm-lock.yaml
  • 팀/CI 동일 트리 보장
  • lockfile 없이 install → 버전 drift

⚖️ npm vs yarn vs pnpm

npm node_modules와 pnpm content store 비교

npmyarnpnpm
속도보통빠름매우 빠름 (링크)
disk중복 설치 多중복 有content-addressable store, hard link
monorepoworkspacesworkspacesworkspace 강력
CLInpxyarn dlxpnpm dlx
  • pnpm: node_modules/.pnpm + symlink, phantom dependency 방지 (엄격)

  • npm v7+: peer deps 자동, workspaces 지원

  • 프로젝트 하나의 패키지 매니저만 (lockfile 혼용 X)

  • npm ci / pnpm install --frozen-lockfile — CI용 clean install

  • npx / pnpm exec — 로컬 bin 일회 실행

  • .npmrc: registry mirror, engine-strict

🔗 참고 자료

  • npm Docs — npm CLI와 패키지 관리 공식 문서다.
  • package-lock.json — lockfile로 의존성 트리를 고정하는 방법을 설명한다.
  • Yarn — Yarn 패키지 매니저 공식 문서다.
  • pnpm — content-addressable store 기반 pnpm 문서다.
  • pnpm Motivation — symlink와 phantom dependency 방지를 설명한다.