
GitHub 공식 변경 로그에 따르면 npm의 다음 메이저 버전인 v12는 npm install 과정에서 자동으로 실행되던 여러 동작을 명시적 허용 방식으로 바꾼다. 변경은 공급망 공격에 악용될 수 있는 설치 시점 코드 실행 경로를 줄이는 데 초점이 맞춰져 있다.
npm v12에서는 의존성의 preinstall, install, postinstall 스크립트가 기본적으로 실행되지 않는다. 네이티브 모듈 빌드에 쓰이는 node-gyp의 암묵적 실행도 허용 목록에 포함되지 않으면 막힌다. Git, file, link 의존성에서 실행되는 prepare 스크립트 역시 같은 방식으로 제한된다.
개발자는 npm 11.16.0 이상에서 현재 프로젝트가 어떤 영향을 받을지 미리 확인할 수 있다. GitHub는 npm approve-scripts --allow-scripts-pending으로 검토 대상 패키지를 확인하고, 신뢰하는 패키지는 npm approve-scripts, 차단할 패키지는 npm deny-scripts로 기록하라고 안내했다. 이 설정은 프로젝트의 package.json에 저장되며, 저장소에 함께 커밋하는 방식이 권장된다.
Git 의존성과 원격 URL 의존성 처리도 더 엄격해진다. npm v12에서는 --allow-git 기본값이 none으로 바뀌어 Git 의존성을 자동으로 해석하지 않으며, --allow-remote 역시 기본 차단 상태가 된다. GitHub는 Git 의존성의 .npmrc가 Git 실행 파일 경로를 바꿔 코드 실행으로 이어질 수 있는 경로를 줄이기 위한 조치라고 설명했다.
이번 변경은 자바스크립트 생태계의 패키지 설치 관행에 직접적인 영향을 줄 가능성이 있다. 특히 CI 환경, 네이티브 애드온을 포함한 패키지, 사내 레지스트리와 Git 기반 의존성을 함께 쓰는 조직은 npm v12 전환 전에 설치 로그와 허용 목록을 점검해야 한다. GitHub는 npm v12 출시 시점을 2026년 7월로 예상하고 있다.
출처: GitHub Changelog https://github.blog/changelog/2026-06-09-upcoming-breaking-changes-for-npm-v12/
출처: npm Docs https://docs.npmjs.com/cli/v11/commands/npm-approve-scripts/