피드로 돌아가기
Your npm Package Is Leaking Source Code (And You Probably Don't Know It)
Dev.toDev.to
DevOps

npm 패키지 배포 시 source map 파일이 포함되면 원본 소스 코드가 그대로 노출됨

Your npm Package Is Leaking Source Code (And You Probably Don't Know It)

Alan West2026년 4월 1일6beginner

Context

TypeScript 컴파일러는 기본적으로 sourceMap: true 설정으로 동작한다. build 단계에서 생성된 .js.map 파일은 sourcesContent 필드에 원본 소스 코드를 그대로 포함한다. npm은 .gitignore에 없는 파일은 모두 배포하므로, dist 폴더에 포함된 source map 파일이 숨겨진 채 npm에 업로드된다.

Technical Solution

  • package.json의 files 필드에 배포 파일을 명시적으로 지정한다
  • .npmignore 파일에 *.map, src/, .env 등을 제외 목록으로 추가한다
  • tsconfig.build.json에서 sourceMap: false로 설정하여 프로덕션 빌드 시 source map 생성을 방지한다
  • prepublishOnly 스크립트에서 npm pack --dry-run | grep .map 검증을 자동화한다
  • npm pack --dry-run으로 배포 전 패키지 내용을 항상 확인한다

Impact

추가 검증 없음

Key Takeaway

npm publish는 파일 복사가 아닌 배포로 취급해야 하며, files 필드의 allowlist 방식으로 필요한 파일만 명시적으로 포함해야 한다


TypeScript 프로젝트에서 npm publish 시 files 필드와 prepublishOnly 스크립트를 통해 source map 파일 배포를 사전에 차단한다

원문 읽기