Codegen이란 무엇인가?
Codegen은 반복적인 코드 작성을 피하기 위한 도구다. Codegen을 사용하는 것은 필수가 아니다. 모든 코드를 직접 작성할 수도 있다. 하지만 Codegen은 기본 구조를 자동으로 생성해주기 때문에 많은 시간을 절약할 수 있다.
React Native는 iOS나 Android 앱을 빌드할 때마다 자동으로 Codegen을 호출한다. 때로는 Turbo Native Modules와 Fabric Native Components를 개발할 때처럼, 어떤 타입과 파일이 실제로 생성되는지 확인하기 위해 Codegen 스크립트를 수동으로 실행해야 할 때도 있다.
Codegen의 동작 원리
Codegen은 React Native 앱과 밀접하게 연결된 프로세스다. Codegen 스크립트는 react-native
NPM 패키지 내부에 존재하며, 앱이 빌드될 때 이 스크립트를 호출한다.
Codegen은 프로젝트 내부 폴더를 탐색한다. 이때 탐색은 package.json
에 지정한 디렉토리에서 시작한다. Codegen은 커스텀 모듈과 컴포넌트에 대한 명세(스펙)를 포함한 특정 JS 파일을 찾는다. 스펙 파일은 타입이 지정된 JS 파일로, React Native는 현재 Flow와 TypeScript를 지원한다.
Codegen이 스펙 파일을 발견할 때마다, 해당 파일과 관련된 보일러플레이트 코드를 생성한다. Codegen은 C++ 글루 코드를 생성한 후, 플랫폼별 코드를 생성한다. Android의 경우 Java를, iOS의 경우 Objective-C++를 사용한다.