ESM 전환 — 모노레포 의존성 정리
이번 작업은 기능 추가가 아니라 프로젝트 기반을 정리하는 chore 성격의 커밋들이다.
ESM 전환
apps/api, apps/workers/*, packages/shared 등 모노레포 내 모든 패키지의 package.json에 "type": "module"을 추가했다. 지금까지 CommonJS 방식으로 운영되고 있었는데, 의존성 중 ESM-only 패키지들이 늘어나면서 더 이상 미루기 어려운 상황이었다.
// 각 패키지의 package.json
{
"type": "module"
}
apps/api/tsconfig.dev.json도 함께 정리했다. 기존에는 module, moduleResolution 같은 CommonJS 관련 컴파일러 옵션을 직접 명시하고 있었는데, 베이스 설정을 상속하는 방식으로 단순화했다. packages/shared의 exports도 단일 진입점으로 정리해서 외부에서 임포트할 때 경로가 명확해졌다.
미사용 의존성 및 파일 정리
ESM 전환과 별도로, 쌓여있던 불필요한 항목들을 한 번에 정리했다.
apps/web에서@dnd-kit/core,@dnd-kit/sortable제거 — 실제로 사용하는 곳이 없었다.- 루트
package.json에서zod제거 — 각 workspace가 자체적으로 zod를 들고 있어서 루트에 둘 이유가 없었다. .changeset/디렉터리,scripts/dev/seed.ts,localstack중복 파일 제거
한 가지 실수가 있었다. recharts도 미사용으로 판단해서 제거했는데, ChannelClient.tsx에서 실제로 사용 중이었다. 이후 커밋에서 바로 복구했다(^3.8.1 재추가).
faster-whisper 코드 제거
자막 처리 방식이 스크립트 기반 SRT 변환으로 바뀌면서, 기존에 사용하던 faster-whisper 기반 파일들을 정리했다.
apps/workers/subtitle/src/transcriber.pyscripts/tools/transcribe.pyscripts/tools/test-whisper.ts
세 파일 모두 더 이상 호출하는 곳이 없었고, Python 환경 의존성도 줄일 수 있어서 제거했다.
기능 개발보다 눈에 잘 안 띄는 작업이지만, 의존성 그래프가 깔끔해지고 빌드 설정이 일관성을 갖게 됐다. 이런 정리가 쌓여야 나중에 새 기능 붙일 때 발목이 안 잡힌다.