프로젝트 소개
ncc는 Vercel이 유지 관리하는 명령줄 도구로, gcc 스타일 컴파일의 정신에 따라 Node.js 프로그램과 모든 종속성을 단일 출력 파일로 번들링합니다. 설계 목표는 제로 구성입니다. 진입 파일을 가리키면 컴팩트한 빌드를 생성하며, tsconfig.json이 있으면 TypeScript를 기본적으로 처리합니다.
주요 명령은 `build`(번들 파일을 출력 디렉터리로 생성, 기본값은 `dist/index.js`), `run`(임시 디렉터리로 빌드하고 전체 소스 맵 지원으로 실행하여 테스트 및 디버깅), `cache`(빌드 캐시 정리, 검사, 크기 확인)입니다. 옵션은 일반적인 번들링 요구를 다룹니다: `--minify`, `--source-map`, `--external`(특정 모듈 번들링 건너뛰기), `--watch`(증분 재빌드), `--target`(ECMAScript 출력 수준 설정), `--v8-cache`(V8 컴파일 캐시 생성), `--license`(라이선스 정보 첨부), `--stats-out`(webpack 통계를 JSON으로 덤프), `--asset-builds`(워커 스크립트 같은 중첩 JS 자산 재귀 번들링)입니다. 모듈 형식은 입력에서 유추되므로 `.mjs` 입력 또는 `"type": "module"` 패키지 경계 내 파일은 ES 모듈 출력을 생성하고, `.cjs` 입력은 CommonJS 확장자를 유지합니다.
CLI 외에도 ncc는 Node.js에서 프로그래매틱 API를 노출합니다. `require('@vercel/ncc')`를 입력 경로와 옵션 객체와 함께 호출하면 `{ code, map, assets }`로 해결되는 프로미스를 반환하며, assets는 파일 이름을 소스, 권한, 심볼릭 링크 메타데이터에 매핑한 맵입니다. 옵션은 CLI 플래그를 반영하며, 사용자 정의 캐시 경로, 외부 모듈, 축소, 소스 맵, 감시 모드, 라이선스 생성, 대상 선택을 포함합니다. 감시 모드에서 반환된 객체는 프로미스 대신 `handler`, `rebuild`, `close` 콜백을 노출합니다.
프로젝트의 명시된 동기는 최소 npm 패키지 게시, 서버리스 환경에 관련 코드만 전송, 번들러 구성 오버헤드 방지, 부팅 시간 및 I/O 개선입니다. 입력 및 출력 모두 Node.js 프로그램을 대상으로 하며 모든 Node.js 패턴과 npm 모듈을 지원하는 것을 목표로 합니다. 문서화된 주의 사항은 파일 및 자산 재배치가 정적 평가기에 의존하므로 정적으로 분석할 수 없는 동적으로 로드된 자산은 올바르게 재배치되지 않을 수 있다는 것입니다. 일부 패키지는 전체 호환성을 위해 추가 옵션이 필요하며, 이는 저장소의 패키지 지원 문서에 정리되어 있습니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.