TypeScript 빌드 캐시를 깃이그노어에 추가해 팀 리포지토리 노이즈
목차
TypeScript 빌드 시스템이 생성하는 캐시를 .gitignore에 등록했다. 사소해 보이는 작업이지만, 팀 리포지토리 관리와 개발 워크플로우에 꽤 의미 있는 정리였다.
왜 지금 이 작업인가
프로젝트가 초기 단계를 지나면서 TypeScript 빌드 파이프라인이 점점 복잡해지고 있었다. 로컬 빌드를 거치면서 컴파일러가 자동으로 생성하는 캐시 파일들이 누적되는데, 이들이 Git 추적 대상에 포함되어 있었다. 작은 것부터 커다란 산물까지, 빌드 과정의 부산물들이 커밋 히스토리에 남기 시작했다.
누군가는 이런 파일들이 PR에서 변경으로 표시되고, 다른 팀원이 풀할 때마다 이 캐시 파일들이 함께 따라왔다. 마진(margin)처럼 보이는 작은 노이즈들이 모여 불필요한 diff를 늘렸고, 결국 코드 리뷰를 할 때 실제 변경사항을 파악하기가 더 어려워지고 있었다.
빌드 캐시와 버전 관리의 관계
빌드 캐시는 본질적으로 로컬 환경의 최적화 산물이다. 한 번 컴파일된 모듈을 재사용해서 빌드 속도를 높이는 것이 목적이고, 각 개발자의 로컬 머신마다 그때그때 필요에 따라 생성되었다가 버려진다.
버전 관리 시스템에 이런 파일들을 포함시키는 것은 몇 가지 문제를 낳는다:
- 리포지토리 크기 증가: 캐시 파일들이 누적되면서
.git디렉토리가 불필요하게 커진다 - 머지 충돌 유발: 빌드 캐시의 타임스탐프나 내용이 변하면 팀원들 간에 같은 파일에 대한 충돌이 발생할 수 있다
- CI/CD 노이즈: 배포 파이프라인에서 캐시를 다시 빌드하므로 리포지토리에서 받아온 캐시는 사실상 쓸모가 없다
- 코드 리뷰 산만함: 진짜 비즈니스 로직 변경을 추적하기 어려워진다
언제 이 정리가 필요했나
지금처럼 개발이 어느 정도 진행된 후에야 이런 설정을 추가하면, 여전히 Git 히스토리에는 예전 캐시 파일들이 남아 있다. 완벽하게 제거하려면 git filter-branch 같은 더 복잡한 작업이 필요할 수도 있다. 그래서 프로젝트 초기, .gitignore를 정할 때부터 빌드 산물들을 미리 배제하는 것이 가장 깔끔하다.
내 경우 이 작업을 늦게라도 지금 한 이유는, 팀원들이 계속 로컬 빌드를 하면서 점점 더 많은 캐시가 쌓이고 있었기 때문이다. 지금 멈추는 것이 앞으로의 리포지토리 건강도(health)를 지키는 가장 실용적인 방법이었다.
.gitignore의 실제 역할
| 항목 | 의도 | 예시 |
|---|---|---|
| 빌드 캐시 | 로컬 컴파일 속도 최적화 | .tsbuildinfo, dist/ 중간 산물 |
| 의존성 | 패키지 매니저 로컬 캐시 | node_modules/ |
| 환경 설정 | 개발자별 로컬 설정 | .env.local, .vscode/local |
| 임시 파일 | IDE/에디터 생성 파일 | .DS_Store, *.swp |
.gitignore에 항목을 추가할 때마다 "이게 정말 리포지토리에 들어가야 하나?"를 한 번 묻는 습관이 중요하다. 대부분의 빌드 산물, 캐시, 로컬 환경 설정은 "아니다"는 답이다.
팀 관점에서의 영향
이 작업은 한 명의 개발자 입장에서는 로컬 클린업 정도이지만, 팀 전체로는 다음을 의미한다:
- 새로운 팀원이 저장소를 받아도 불필요한 캐시 파일이 함께 따라오지 않는다
- PR 리뷰가 더 명확해진다 (실제 변경사항만 남는다)
- 리포지토리가 더 빠르게 클론되고, 히스토리 탐색도 가볍다
- 기여자들이 ".gitignore에 뭘 추가할까?" 같은 고민을 덜 하게 된다
이런 식으로 작은 설정 하나가 팀 전체의 개발 경험에 누적된다. 코드만큼 인프라도 정성 있게 다루는 것의 중요성을 다시 한 번 깨닫는 계기였다.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.