빌드 설정
ignoreScripts#
- 기본값: false
- 타입: Boolean
프로젝트의 package.json과 그 종속성에 정의된 스크립트를 실행하지 않습니다.
참고
이 플래그는 .pnpmfile.mjs의 실행을 막지 않습니다
childConcurrency#
- 기본값: 5
- 유형: Number
동시에 할당하여 node_modules를 빌드할 수 있는 자식 프로세스의 최대 수입니다.
sideEffectsCache#
- 기본값: true
- 타입: Boolean
(pre/post)install 훅의 결과를 사용하고 캐시합니다.
패키지 내용(예를 들어 빌드 출력)을 pre/post install 스크립트가 수정하면 pnpm은 수정된 패키지를 전역 저장소에 저장합니다. 같은 머신에서 이후 설치할 때 pnpm은 캐시된 사전 빌드 버전을 재사용하여—설치 속도를 크게 향상시킵니다.
참고
다음의 경우 이 설정을 비활성화하는 것이 좋습니다:
- 설치 스크립트가 패키지 디렉터리 외부의 파일을 수정하는 경우 (pnpm은 이러한 변경 사항을 추적하거나 캐시할 수 없습니다).
- 스크립트가 패키지 빌드와 관련 없는 부수 효과를 수행하는 경우입니다.
sideEffectsCacheReadonly#
- 기본값: false
- 타입: Boolean
부수 효과 캐시가 있는 경우에만 사용하고, 새 패키지에 대해서는 생성하지 않습니다.
unsafePerm#
- 기본값: root로 실행 중이면 false, 그렇지 않으면 true
- 타입: Boolean
패키지 스크립트를 실행할 때 UID/GID 전환을 활성화하려면 true로 설정하세요. 명시적으로 false로 설정하면 root가 아닌 사용자로 설치하는 것이 실패합니다.
nodeOptions#
- 기본값: NULL
- 유형: String
Node.js에 NODE_OPTIONS 환경 변수를 통해 전달할 옵션입니다. 이는 pnpm 자체가 실행되는 방식에는 영향을 주지 않지만 라이프사이클 스크립트가 호출되는 방식에는 영향을 줍니다.
기존 NODE_OPTIONS를 유지하려면 구성에서 ${NODE_OPTIONS}를 사용하여 기존 환경 변수를 참조할 수 있습니다:
nodeOptions: "${NODE_OPTIONS:- } --experimental-vm-modules"
verifyDepsBeforeRun#
- 기본값: install
- 유형: install, warn, error, prompt, false
이 설정은 스크립트를 실행하기 전에 종속성의 상태를 확인할 수 있게 합니다. 이 검사는 pnpm run 및 pnpm exec 명령에서 실행됩니다. 지원되는 값은 다음과 같습니다:
install-node_modules가 최신 상태가 아니면 install을 자동으로 실행합니다.warn-node_modules가 최신 상태가 아니면 경고를 출력합니다.prompt-node_modules가 최신 상태가 아니면 사용자에게 install 실행 권한을 묻습니다.error-node_modules가 최신 상태가 아니면 오류를 발생시킵니다.false- 종속성 검사를 비활성화합니다.
strictDepBuilds#
버전 10.3.0에서 추가됨
- 기본값: true
- 타입: Boolean
strictDepBuilds가 활성화되어 있으면, 검토되지 않은 빌드 스크립트(postinstall 스크립트라고도 함)가 있는 종속성이 하나라도 있을 경우 설치가 성공이 아닌 종료 코드로 종료됩니다.
allowBuilds#
버전 10.26.0에서 추가됨
스크립트 실행을 명시적으로 허용(true)하거나 허용하지 않을(false) 패키지 매처의 맵입니다.
allowBuilds:
esbuild: true
core-js: false
# nx versions with build scripts not listed below will
# fail by default with ERR_PNPM_IGNORED_BUILDS
nx@21.6.4 || 21.6.5: true
nx@21.6.0: false
Git 호스팅 패키지: 패키지 이름만으로는 git 또는 tarball 종속성의 빌드가 승인되지 않습니다 — 이름만으로는 아티팩트를 식별할 수 없기 때문입니다. 정확히 해석된 경로(커밋 포함)로 승인하거나, v11.11.0부터는 리포지터리 URL로 승인할 수 있습니다:
allowBuilds:
# Approves any commit from this repository
'foo@git+ssh://git@example.com/org/foo.git': true
# Approves only this exact commit
'bar@git+https://github.com/org/bar.git#abc123': true
리포지터리 형식을 사용하면 신뢰할 수 있는 git 종속성이 새 커밋마다 다시 승인하지 않고도 브랜치 업데이트 후에도 빌드 스크립트를 계속 실행할 수 있습니다. 키는 패키지 이름 뒤에 @와 git URL이 오며 #<ref> 접미사는 없습니다. 일치는 정확히 이루어지므로 같은 리포지터리에 대한 git+ssh://와 git+https:// URL은 별개의 키입니다.
버전 v11.19.0부터 리포지터리 형식은 pnpm이 복제하지 않고 tarball로 다운로드하는 git 호스팅 패키지도 승인합니다 — 예를 들어 github: 종속성은 codeload.github.com에서 가져옵니다. foo@git+https://github.com/org/foo.git 항목은 pnpm이 리포지터리를 복제하든 tarball을 다운로드하든 foo를 승인합니다. GitLab 및 Bitbucket tarball 다운로드도 같은 방식으로 일치됩니다. 전체 tarball 종속성 경로로 특정 해석된 커밋을 승인하거나 거부하는 방식은 계속 작동합니다.
패키지 이름에 의한 거부는 이런 식으로 제한되지 않습니다: foo: false는 foo가 레지스트리에서 오든 git에서 오든 foo를 차단합니다.
기본 동작: allowBuilds에 나열되지 않은 패키지는 기본적으로 허용되지 않으며 검토되지 않은 것으로 처리됩니다. 기본적으로 오류가 출력됩니다(strictDepBuilds의 기본값은 true입니다). strictDepBuilds를 false로 설정하면 대신 경고가 출력됩니다.
설치 중 allowBuilds에 아직 나열되지 않은 빌드 무시 종속성은 자리표시자 값과 함께 pnpm-workspace.yaml에 자동으로 추가되므로 직접 true 또는 false로 설정할 수 있습니다. --allow-build 플래그는 pnpm add와 pnpm approve-builds에서 해당 항목을 여기에도 기록합니다.
이전 설정에서 마이그레이션
이 설정을 자동으로 마이그레이션하려면 pnpx codemod run pnpm-v10-to-v11을 v10에서 v11로 마이그레이션 가이드에서 안내하는 대로 실행하세요.
다음 설정은 v11에서 제거되었으며 allowBuilds로 대체되었습니다: onlyBuiltDependencies, onlyBuiltDependenciesFile, neverBuiltDependencies, ignoredBuiltDependencies, 그리고 ignoreDepScripts.
이전:
onlyBuiltDependencies:
- electron
neverBuiltDependencies:
- core-js
ignoredBuiltDependencies:
- esbuild
이후:
allowBuilds:
electron: true
core-js: false
esbuild: false
dangerouslyAllowAllBuilds#
버전 10.9.0에서 추가됨
- 기본값: false
- 타입: Boolean
true로 설정하면 종속성의 모든 빌드 스크립트(예를 들어 preinstall, install, postinstall)가 승인 없이 자동으로 실행됩니다.
경고
이 설정은 모든 종속성—전이 종속성 포함—이 지금과 앞으로 모두 설치 스크립트를 실행하도록 허용합니다. 현재 종속성 그래프가 안전해 보이더라도:
- 향후 업데이트로 새롭고, 신뢰할 수 없는 종속성이 도입될 수 있습니다.
- 기존 패키지가 이후 버전에서 스크립트를 추가할 수 있습니다.
- 패키지가 탈취되거나 침해되어 악성 코드를 실행하기 시작할 수 있습니다.
최대한 안전하게 사용하려면, 위험을 충분히 인지하고 있으며 가져오는 전체 생태계를 신뢰하는 경우에만 이 옵션을 활성화하세요. 빌드를 검토하고 명시적으로 허용하는 것이 좋습니다.