프로젝트 구조
Gemini CLI의 코드베이스 조직 및 아키텍처 이해
프로젝트 개요
Gemini CLI는 여러 상호 연결된 패키지가 있는 모노레포로 구성됩니다
Gemini CLI는 더 쉬운 개발, 테스트 및 유지 관리를 위해 기능을 독립적인 패키지로 모듈화하는 Lerna 기반 모노레포 프로젝트입니다.
패키지 구조
Gemini CLI 생태계를 구성하는 핵심 패키지
CLI 패키지
packages/cli
주요 명령줄 인터페이스 및 사용자 대면 명령
주요 책임:
- 명령 구문 분석 및 라우팅
- 사용자 인터페이스 및 상호 작용
- 구성 관리
- 오류 처리 및 보고
- 도움말 및 문서 표시
코어 패키지
packages/core
핵심 기능 및 비즈니스 로직
주요 책임:
- API 클라이언트 구현
- 모델 상호작용
- 도구 관리 시스템
- MCP 프로토콜 처리
- 상태 관리
도구 패키지
packages/tools
내장 도구 및 유틸리티
주요 책임:
- 파일 시스템 작업
- 셸 명령 실행
- 웹 요청 및 검색
- 메모리 관리
- 도구 등록
확장 패키지
packages/extensions
확장 시스템 및 플러그인 관리
주요 책임:
- 확장 로딩 및 관리
- 플러그인 레지스트리
- 확장 API
- 라이프사이클 관리
- 종속성 해결
개발 워크플로
코드베이스와 효과적으로 작업하는 방법
글로벌 명령
npm run bootstrap
모든 패키지 설치 및 연결
npm run build
모든 패키지 빌드
npm run test
모든 테스트 실행
npm run lint
모든 패키지 린트
패키지별 명령
lerna run build --scope @gemini/cli
특정 패키지 빌드
lerna run test --scope @gemini/core
특정 패키지 테스트
lerna add lodash packages/core
패키지에 종속성 추가