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로 이전

참고 자료

Posted by 튼튼한노예
,

ssd를 하나 질러서 윈도우를 다시 깔고 롤을 하려는데, d3dx9_39.dll 파일에 문제가 있어 실행이 되지 않았다.

 

하지만, 인터넷에 떠돌아 다니는 dll 파일을 다운받아 windows 폴더에 넣어주는 방법들로는 해결이 안되서 포스팅을 하게 되었다.

 

해결법은 간단했다.

 

절대로 인터넷에 떠돌아 다니는 dll 파일을 바로 복사하지 말고, 다이렉트x 공식 인스톨러로 인스톨 할 것.

 

 

내 경우에는 이미 windows 폴더에 다운받았던 d3dx9_39.dll 파일들이 있었는데,

1. windows 폴더에서 검색 기능으로 d3dx9_39.dll 파일들 모두 찾은 뒤 삭제

2. 아래 링크를 통해 다이렉트엑스 공식 인스톨러 다운로드 후 설치 (관리자 권한으로 실행)

www.microsoft.com/ko-kr/download/details.aspx?id=35

 

DirectX 최종 사용자 런타임

Microsoft DirectX® 최종 사용자 런타임은 현재 버전의 DirectX를 업데이트합니다. DirectX는 PC에서 고속 멀티미디어 및 게임을 구동하는 핵심적인 Windows® 기술입니다.

www.microsoft.com

두가지 단계면 해결할 수 있었다.

 

정상적으로 진행이 되었다면 빠져있는 d3dx9_39.dll 파일을, 공식 인스톨러가 적당한 곳에 넣어줄 것이다.

(1번 단계의 d3dx9_39.dll 파일제거가 올바르게 되지 않았다면, 이미 최신 소프트웨어라는 안내문구만 뜰 것이다. window 전체 폴더에서 d3dx9_39.dll 파일을 전부 지워주자)

Posted by 튼튼한노예
,

아마존의 EC2 인스턴스에 ssh로 접속 시, 윈도우 환경에서 퍼미션 문제가 발생할 수 있다.

(우분투일 경우, 단순하게 퍼미션을 400 으로 바꿔주면 된다.)(chmod 400 [키이름].pem)

 

윈도우일 경우, GUI 화면에서 퍼미션을 변경해주면 된다.

기본적으로 다른 계정에서 접속이 가능하면 안되는 문제이기 때문에,

'현재 윈도우 사용자'의 권한만 남기고 다른 사용자의 권한을 제거하면 되는 작업을 해주면 된다.

 

고급 탭 클릭

 

상속 사용 안함 설정 후(팝업의 두 옵션 중 아무거나 클릭) -> 모든 권한 제거

 

현재 사용자(Admin 아닌 윈도우에 로그인된 계정)만 추가하고, 모든 권한 부여함

 

접속완료

 

Posted by 튼튼한노예
,