pnpm install

별칭: i

pnpm install은 프로젝트의 모든 종속성을 설치하는 데 사용됩니다.

Large package downloads use temporary disk space to keep memory usage bounded. Temporary download files are removed after extraction or a failed download. Package manifests and archive metadata that need buffering are limited to 64 MiB.

CI 환경에서, lockfile이 있지만 업데이트가 필요한 경우 설치가 실패합니다. To allow lockfile updates in CI, run pnpm install --no-frozen-lockfile.

workspace 내에서 pnpm install은 모든 프로젝트의 모든 종속성을 설치합니다. If you want to disable this behavior, set the recursiveInstall setting to false.

Changes to a workspace package's bin field are linked into its dependents' node_modules/.bin on the next install, even with --frozen-lockfile and an unchanged lockfile.

요약#

명령어 의미
pnpm i --offline 스토어에서만 오프라인으로 설치
pnpm i --frozen-lockfile pnpm-lock.yaml은 업데이트되지 않습니다
pnpm i --lockfile-only pnpm-lock.yaml만 업데이트됩니다
pnpm i --dry-run 변경 사항을 저장하지 않고 미리 보기

의존성 필터링 옵션#

기존 lockfile이 없으면 pnpm은 새로 생성해야 하며, 이 lockfile은 종속성 필터링과 관계없이 일관되어야 합니다. 따라서 lockfile이 없는 디렉터리에서 pnpm install --prod를 실행해도 개발 종속성은 여전히 해석되며, 해석에 실패하면 오류가 발생합니다. 이 규칙의 유일한 예외는 link: 종속성입니다.

--frozen-lockfile이 없으면 pnpm은 file: 종속성의 오래된 정보를 확인하므로, file:의 대상이 제거된 환경에서 --frozen-lockfile 없이 pnpm install --prod를 실행하면 오류가 발생합니다.

--prod, -P#

  • 기본값: false
  • 유형: Boolean

If true, pnpm will not install any package listed in devDependencies and will remove those insofar they were already installed. false이면 pnpm은 devDependencies와 dependencies에 나열된 모든 패키지를 설치합니다.

--dev, -D#

Only devDependencies are installed and dependencies are removed insofar they were already installed.

--no-optional#

optionalDependencies는 설치되지 않습니다.

--no-runtime#

추가된 버전: v11.1.0

런타임 항목(예: devEngines.runtime을 통해 다운로드된 Node.js)의 설치를 건너뜁니다. 이때 lockfile은 변경되지 않으므로 frozen 설치도 여전히 검증을 통과합니다. 런타임 가져오기와 bin 링크만 건너뜁니다.

이는 pnpm install이 실행되기 전에 런타임이 외부에서 프로비저닝되는 CI 매트릭스(예: pnpm runtime -g set node <version>을 통해)에서 유용합니다.

This can also be set with runtime: false in pnpm-workspace.yaml.

옵션#

--force#

의존성 강제 재설치: 저장소에서 수정된 패키지를 다시 가져오고, 호환되지 않는 pnpm 버전에서 생성된 lockfile 및 모듈 디렉터리를 다시 만듭니다. 현재 환경(cpu, os, arch)을 만족하지 않더라도 모든 optionalDependencies를 설치합니다.

Since v11.28.0, set forceIgnoresPlatform to false to keep skipping optional dependencies whose os, cpu, or libc do not match the host under --force.

--offline#

  • 기본값: false
  • 유형: Boolean

true이면 pnpm은 스토어에 이미 있는 패키지만 사용합니다. 로컬에서 패키지를 찾을 수 없으면 설치가 실패합니다.

--prefer-offline#

  • 기본값: false
  • 유형: Boolean

true이면 캐시된 데이터의 최신 여부 확인을 건너뛰지만, 누락된 데이터는 서버에 요청합니다. 완전한 오프라인 모드를 강제하려면 --offline을 사용하세요.

--no-lockfile#

pnpm-lock.yaml 파일을 읽거나 생성하지 않습니다.

--lockfile-only#

  • 기본값: false
  • 유형: Boolean

사용하면 pnpm-lock.yaml과 package.json만 업데이트합니다. node_modules 디렉터리에는 아무것도 기록되지 않습니다.

--dry-run#

추가된 버전: v11.8.0

전체 의존성 해석을 실행하고, 디스크에 아무것도 쓰지 않은 채 실제 설치 시 무엇이 변경될지 보고합니다. 변경된 lockfile, 매니페스트 또는 node_modules는 저장되지 않습니다.

드라이 런이 완료되면, 실제 설치 시 lockfile이 업데이트될 것이라고 보고하더라도 종료 코드 0으로 종료됩니다.

--dry-run은 구성된 pnpr 서버와 함께 사용할 수 없습니다. 해당 설치 경로는 서버를 통해 해석하고 링크하기 때문입니다.

--fix-lockfile#

깨진 lockfile 항목을 자동으로 수정합니다.

--update-checksums#

추가된 버전: v11.4.0

다운로드한 tarball의 해시가 pnpm-lock.yaml에 기록된 integrity와 일치하지 않을 때, 레지스트리가 현재 제공하는 값으로 잠긴 tarball integrity 값을 갱신합니다.

기본적으로 v11.4.0부터 integrity 불일치는 즉시 실패로 처리됩니다: pnpm install은 레지스트리에서 조용히 다시 해석하여 잠긴 integrity를 덮어쓰는 대신 ERR_PNPM_TARBALL_INTEGRITY로 종료합니다. 이는 커밋된 lockfile을 함께 배포하는 프로젝트를, 손상된 레지스트리나 프록시 또는 다시 게시된 버전이 깨끗한 머신에서 공격자가 제어하는 콘텐츠로 바꿔치기하는 것으로부터 보호합니다.

--update-checksums는 정당한 경우(예: 레지스트리가 tarball을 다시 작성했고 새 바이트가 올바른지 확인한 경우)를 위한 범위가 좁은 옵트인입니다. 우회가 적용되면 여전히 경고가 출력되므로 해당 작업을 감사할 수 있습니다.

--force와 pnpm update는 의도적으로 integrity 검사를 우회하지 않습니다. --frozen-lockfile은 변경되지 않으며, --fix-lockfile은 문서화된 목적(누락된 lockfile 항목 채우기)을 유지하고 역시 우회 수단이 아닙니다.

--frozen-lockfile#

  • 기본값:
    • CI가 아닌 경우: false
    • CI의 경우: lockfile이 있으면 true
  • 유형: Boolean

true이면 pnpm은 lockfile을 생성하지 않으며, lockfile이 매니페스트와 동기화되지 않았거나 업데이트가 필요하거나 lockfile이 없으면 설치에 실패합니다.

이 설정은 CI environments에서 기본적으로 true입니다. pnpm detects a CI environment with the ci-info package. Set CI=false to turn detection off.

--no-frozen-lockfile#

Allows lockfile updates during installation. This is the inverse of --frozen-lockfile.

--merge-git-branch-lockfiles#

모든 git branch lockfile을 병합합니다. git 브랜치 lockfile에 대해 자세히 알아보세요.

--reporter=<name>#

  • 기본값:
    • TTY stdout의 경우: default
    • TTY가 아닌 stdout의 경우: append-only
  • 유형: default, append-only, ndjson, silent

터미널에 설치 진행률에 대한 디버그 정보를 기록할 기록자를 선택할 수 있습니다.

  • silent - 치명적인 오류를 포함하여 어떤 출력도 콘솔에 기록되지 않습니다
  • default - stdout이 TTY일 때의 기본 리포터
  • append-only - 출력이 항상 끝에 추가됩니다. 커서 조작이 수행되지 않습니다.
  • ndjson - 가장 상세한 리포터입니다. 모든 로그를 ndjson 형식으로 출력합니다

출력되는 정보의 유형을 변경하려면 loglevel 설정을 사용하세요.

--shamefully-hoist#

  • 기본값: false
  • 유형: Boolean

npm 또는 yarn과 유사한 평탄한 node_modules 구조를 생성합니다. 경고: 이 방법은 절대 권장되지 않습니다.

--ignore-scripts#

  • 기본값: false
  • 유형: Boolean

프로젝트 package.json 및 해당 종속성에 정의된 스크립트를 실행하지 않습니다.

--filter <package_selector>#

필터링에 대해 자세히 알아보세요.

--resolution-only#

의존성 해석을 다시 실행합니다: 피어 의존성 문제를 출력할 때 유용합니다.

정보

To list peer dependency issues without re-running resolution, use pnpm peers check. It reads them from the lockfile.

--cpu=<name>#

버전 10.14.0에서 추가됨

설치할 네이티브 모듈의 CPU 아키텍처를 재정의합니다. 허용되는 값은 process.arch에서 파생된 package.json의 cpu 필드와 동일합니다.

--os=<name>#

버전 10.14.0에서 추가됨

설치할 네이티브 모듈의 OS를 재정의합니다. 허용되는 값은 package.json의 os 필드와 동일하며, 이는 process.platform에서 파생됩니다.

--libc=<name>#

버전 10.14.0에서 추가됨

설치할 네이티브 모듈의 libc를 재정의합니다. 허용되는 값은 package.json의 libc 필드와 동일합니다.