폴더 구조
프로젝트의 폴더 구조는 프로젝트의 규모와 팀의 규모에 따라 달라진다. 궁극의 폴더 구조는 없으며 상황에 맞게 적절한 폴더 구조를 선택하는 것이 중요하다.
참고
1. 파일 타입 중심의 폴더 구조
.
└── src
├── components // 컴포넌트
│ ├── button
│ ├── input
│ └── footer
├── pages // 컴포넌트를 배치하는 페이지
├── assets // 이미지, 폰트 등의 데이터
├── utils // 범용적으로 사용 가능한 유틸 함수
├── helpers // 프로젝트에서만 사용 가능한 유틸 함수
├── hooks // 커스텀 hook
├── store // 전역 상태 관리
├── types // 타입 지정
├── tests // 테스트 코드
└── consts // 상 수
장점
- 각 파일의 구분이 명확하다. 어디에 위치시켜야할지 고민할 필요가 없이 단순하다.
- 작은 프로젝트에서 효율적이다.
단점
컴포넌트가 많아지면 관리가 어려워진다.
.
└── src
├── components // 컴포넌트
│ ├── button
│ ├── input
│ ├── modal
│ ├── featureButton/
│ ├── featureInput/
│ ├── featureModal/
│ └── footer
├── pages // 컴포넌트를 배치하는 페이지
├── assets // 이미지, 폰트 등의 데이터
├── utils // 범용적으로 사용 가능한 유틸 함수
├── helpers // 프로젝트에서만 사용 가능한 유틸 함수
├── hooks // 커스텀 hook
│ ├── useModal.js
│ ├── useInput.js
│ ├── useFeatureButton.js
│ ├── useFeatureInput.js
│ └── useFeatureModal.js // 특정 feature에만 사용하는 hook
├── store // 전역 상태 관리
├── types // 타입 지정
├── tests // 테스트 코드
└── consts // 상수
- 폴더 하위 항목이 많아져 검색이 어렵다.
- 검색을 위해 유니크한 파일명을 만들어야하는데 각 파일을 네이밍하는 것도 고민스러워진다.
- 작업을 함에 있어서 응집도가 낮아진다.
- 각 폴더 하위에 특정 feature에만 사용하는 파일과 공통으로 사용되는 파일이 많아지면 한 눈에 프로젝트를 파악하기 어려워진다.