pnpm install 뒤에 Ignored build scripts 경고가 떴다면 잘 찾아오셨어요. 명령 몇 줄로 경고 없이 설치를 끝내는 방법을 순서대로 정리했어요.
결론부터
2026년 10월, pnpm 11.x 기준이에요. pnpm approve-builds로 esbuild, sharp 같은 패키지를 승인하거나 pnpm-workspace.yaml의 allowBuilds에 직접 적으면 해결돼요. 설정 파일을 손으로 고쳤다면 node_modules/.modules.yaml에 캐시된 ignoredBuilds가 남아 있으니 --force로 재설치해야 해요.
pnpm install --force
이런 에러가 뜬다면
pnpm install 뒤에 아래와 같은 메시지가 나와요.
Error: ERR_PNPM_IGNORED_BUILDS
Ignored build scripts: esbuild@0.28.2
패키지 이름과 버전은 프로젝트마다 달라요. 위 내용은 예시이고, 핵심은 ERR_PNPM_IGNORED_BUILDS와 Ignored build scripts 문구예요.
esbuild나 sharp처럼 설치할 때 빌드 스크립트를 돌리는 패키지에서 주로 나와요. pnpm v10.3.0부터 strictDepBuilds 기본값이 true라서, 승인되지 않은 빌드 스크립트가 있으면 경고로 끝나지 않고 설치 실패로 이어져요.
해결 방법
1. approve-builds로 빌드 스크립트를 승인해요
가장 빠른 방법은 pnpm이 안내하는 명령을 그대로 실행하는 거예요. 경고에는 pnpm approve-builds로 스크립트를 허용할 의존성을 고르라는 안내가 함께 나와요. 목록에서 실제로 빌드가 필요한 패키지(예: esbuild, sharp)를 골라 승인하면 돼요.
pnpm approve-builds
2. 버전에 맞는 위치에 허용 목록을 적어요
대화형 명령을 돌리기 어려운 CI나 팀 저장소라면 설정 파일에 패키지를 직접 명시해요. 어디에 적느냐는 pnpm 버전에 따라 달라요.
예전 방식: package.json의 pnpm.onlyBuiltDependencies
pnpm 11은 package.json의 pnpm 필드를 읽지 않아요. 이 방식으로 적어 둔 설정은 11로 올리면 적용되지 않으니, 아래 방식으로 옮겨야 해요.
pnpm v10.26.0 이상: allowBuilds
v10.26.0부터 allowBuilds 설정이 추가됐어요. 패키지 이름별로 true(허용) 또는 false(차단)를 적는 맵이에요.
pnpm 11: pnpm-workspace.yaml의 allowBuilds
pnpm 11부터는 설정의 위치가 pnpm-workspace.yaml로 옮겨졌고, 키 이름은 allowBuilds(불리언)예요. 프로젝트 루트의 pnpm-workspace.yaml에 아래처럼 적어요.
allowBuilds:
esbuild: true
sharp: true
10에서 11로 올리는 중이라면 package.json에 있던 pnpm.onlyBuiltDependencies 항목을 이 형태로 옮겨 두세요.
3. 설정 파일을 직접 고쳤다면 --force로 다시 설치해요
pnpm approve-builds 대신 설정 파일을 손으로 수정했는데도 경고가 그대로라면 이 단계가 빠진 거예요. node_modules/.modules.yaml에 첫 설치 때의 ignoredBuilds가 캐시로 남아 있어서, 일반 pnpm install로는 경고가 사라지지 않아요.
pnpm install --force
설치가 끝난 뒤 Ignored build scripts 메시지가 더 이상 나오지 않으면 해결된 거예요.
왜 이런 문제가 생길까
원인은 pnpm이 의존성의 빌드 스크립트를 기본적으로 믿지 않기 때문이에요. esbuild나 sharp 같은 패키지는 설치할 때 postinstall 같은 스크립트를 돌려 네이티브 바이너리를 준비해요. 설치 중에 임의의 코드가 실행되는 셈이라, pnpm은 allowBuilds에 나열되지 않은 패키지를 검토되지 않은 것으로 보고 스크립트를 막아요.
여기에 strictDepBuilds가 켜져 있으면 검토되지 않은 빌드 스크립트가 있는 의존성이 하나만 있어도 설치가 성공이 아닌 종료 코드로 끝나요. CI에서 ERR_PNPM_IGNORED_BUILDS로 빌드가 멈추는 게 이 때문이에요.
자주 하는 실수
- pnpm 버전을 고정하지 않는 실수: CI에서
npm i -g pnpm처럼 버전 없이 설치하면 매 실행마다 최신 pnpm을 새로 받아요. 어제까지 통과하던 승인 우회가 갑자기 무효가 되면서 배포가 실패할 수 있어요. 워크플로에서 pnpm 버전을 명시해 고정하세요. - pnpm 11에서
onlyBuiltDependencies만 남겨 두는 실수: 11.x에서는 이 키만으로는 빌드가 계속 막혀요.pnpm-workspace.yaml의allowBuilds로 옮겼는지 확인하세요. - 설정만 고치고 재설치를 건너뛰는 실수: 설정을 바꿨다면
pnpm install --force까지 한 세트로 실행하세요.
자주 묻는 질문
Q. 승인 목록 없이 전부 허용하는 방법은 없나요?
A. --config.dangerouslyAllowAllBuilds=true 옵션을 설치 명령에 붙이면 모든 의존성의 빌드 스크립트가 실행돼요. 임시 확인용으로만 쓰고, 최종 설정에는 남기지 마세요.
pnpm install --config.dangerouslyAllowAllBuilds=true
Q. 설치할 때 package.json의 pnpm 필드를 더 이상 읽지 않는다는 경고가 같이 떠요.
A. pnpm 11부터 package.json의 pnpm 필드를 읽지 않아서 나오는 경고예요. 그 안에 적어 둔 설정은 적용되지 않으니, 필요한 값은 pnpm-workspace.yaml로 옮겨 두세요.
Q. CI 워크플로에 dangerouslyAllowAllBuilds 옵션이 이미 붙어 있는데 그대로 둬도 되나요?
A. 동작은 하지만 오래 두는 건 권하지 않아요. pnpm 11에서 package.json 필드가 먹히지 않아 우회로 붙여 둔 경우가 많은데, 그대로 두면 모든 패키지의 스크립트를 허용하는 상태가 계속되거든요. pnpm-workspace.yaml의 allowBuilds에 필요한 패키지를 적고 --force로 재설치해 통과하는지 확인한 뒤 옵션을 빼세요.
정리
pnpm approve-builds실행 또는pnpm-workspace.yaml의allowBuilds에 패키지 명시- 설정 파일을 직접 고쳤다면
pnpm install --force로 캐시 초기화 - pnpm 11로 업그레이드 시
package.json의onlyBuiltDependencies를allowBuilds로 이전







