# 빌드 설정
- CRA
- 장점: CRA가 오래돼서 비교적 대중화되어있음.
- 단점: vite에 비해 느림.
- vite
- 장점: 경험이 있다. 속도에 이점이 있음.
- 단점: CRA에 비해 대중화되어있지 않음.
## 결론
- vite를 사용하기로 결정.
# 패키지 설정
- npm
- 장점: 경험이 있다. 대중화되어 커뮤니티가 활성화. 지원하는 기능이 많음.
- 단점: pnpm에 비해 느림.
- pnpm
- 장점: npm에 비해 빠름.
- 단점: npm에 비해 대중화되어있지 않음.
## 결론
- npm을 사용하기로 결정.
# 스타일링
- scss
- 장점
- 강의가 있다.
- 재사용면에서 유리.
- 별도의 파일로 관리가 가능.
- 한번 의견을 통합하면 그 이후 수월할 수 있음.
- 단점
- 파일 분리에 대한 분기점 의견 통합이 별도로 필요.
- 커뮤니티 활성화가 비교적 떨어짐.
- styled-component
- 장점
- css의 본질에 변화가 없음.
- 다른 스타일링은 경험이 있기 떄문에 학습을 위해 하는 것이 좋을수 있음.
- 단점: 컴포넌트 분리에 용이하지 않다. 인라인 가독성이 낮아짐.
- tailwind
- 장점: 컴포넌트 분리에 용이.
- 단점: 중복 문제가 발생.
## 결론
- styled-component를 사용하기로 결정.
# 상태 관리
- redux toolkit
- 장점
- 비교적 보일러 플레이트가 낮음.
- 짜여진 틀이 있다는 것이 오류를 발견할 수 있는 이점.
- 단점: 오류가 발생했을 떄 해결이 어려울 수 있다는 단점.
- recoil
- 장점: 사용하기 쉬움.
- 단점: redux가 학습과 취업에 유리.
- Context API
- 장점: 프로젝트 규모가 작기 떄문에 redux와 같은 무거운 설치가 필요없음.
- 단점: redux가 학습과 취업에 유리.
## 결론
- redux toolkit을 사용하기로 결정.
# 네트워크
- axios
- 장점
- 서버리스 환경에서 사용하기 좋음.
- 이미 경험이 있음.
- 단점: fetch에 비해 무거움.
## 결론
- axios를 사용하기로 결정.
# 배포
- Vecel
- 장점: 이미 경험이 있음.
- 단점: netlify에 비해 대중화되어있지 않음.
## 결론
- Vecel을 사용하기로 결정.
# 깃 관리
- Git Flow
- 장점: 충돌에 대한 방안을 마련할 수 있음.
- 단점: 너무 복잡한 규칙때문에 처음 깃관리를 하는 사람들에게는 어려울 수 있음.
- Github Flow
- 장점: 간단한 규칙이기 때문에 처음 깃관리를 하는 사람들에게도 쉬움.
- 단점: 충돌에 대한 방안을 마련할 수 없음.
## 결론
- Git Flow를 사용하기로 결정.