도메인 경계 나누기
기능별 코드와 공유 유틸을 분리하되 shared가 모든 것을 삼키지 않게 한다.
shared 남용은 숨은 결합을 만든다규모가 커진 TypeScript 프로젝트에서 유지보수성은 예쁜 폴더명보다 import 방향, package boundary, tsconfig 참조, build/test/typecheck 명령이 일관되는지에서 나온다. 모노레포라면 각 패키지가 무엇을 공개하고 무엇을 숨기는지도 계약이다.
기능별 코드와 공유 유틸을 분리하되 shared가 모든 것을 삼키지 않게 한다.
shared 남용은 숨은 결합을 만든다패키지나 폴더의 index export로 외부에서 접근할 표면을 제한한다.
내부 파일 직접 import는 변경을 어렵게 한다baseUrl, paths, project references가 빌드 순서와 타입 경계를 반영하는지 확인한다.
alias는 구조를 숨길 수도 있다dev, build, typecheck, test, lint가 각각 무엇을 보장하는지 명확히 한다.
build 성공이 타입 검사 전체를 의미하지 않을 수 있다패키지와 폴더 사이 import 방향이 되돌아오지 않는지 도구로 확인한다.
순환 참조는 런타임 초기화 문제로 번진다