React 빌드 도구와 CRA

dmn_nmd·2024년 8월 12일

Build Tool

목록 보기
1/2
post-thumbnail

빌드

빌드는 소스 코드를 실행 가능한 애플리케이션으로 변환하는 전체 과정입니다. 빌드 도구는 코드를 컴파일하고, 최적화하고, 배포 가능한 형태로 변환하는 역할을 수행합니다.

빌드 도구의 변화

  1. 초기: Webpack과 Babel 같은 도구를 직접 설정해야 했습니다.
  2. CRA의 등장: 단일 명령어로 React 프로젝트를 설정하고, Webpack, Babel, ESLint 등의 도구를 자동으로 구성할 수 있게 되었습니다.
  3. 현재 추세: CRA의 개발이 공식 중단되었고, Vite, Next.js와 같은 새로운 도구들로 대체되고 있습니다.

빌드 도구의 주요 기능

  1. 번들링: 여러 개의 파일과 모듈을 하나의 파일로 합칩니다. 이를 통해 네트워크 요청 수를 줄이고, 애플리케이션 로딩 속도를 향상시킵니다.

  2. 트랜스파일링: 최신 JavaScript(ES6+) 코드를 구버전 환경에서도 동작하도록 변환합니다. Babel이 주로 사용되며, JSX나 TypeScript도 이 과정에서 변환됩니다.

  3. 최적화:

    • 코드 분할: 애플리케이션을 여러 청크로 나누어 필요한 부분만 로드하게 하여 초기 로딩 시간을 줄입니다.
    • 트리 쉐이킹: 사용하지 않는 코드를 제거하여 번들 크기를 최소화합니다.
  4. 개발 서버 및 HMR (Hot Module Replacement): 로컬 환경에서 애플리케이션을 실행하고, 변경 사항을 실시간으로 반영할 수 있게 해줍니다. 이를 통해 개발 속도를 크게 향상시킬 수 있습니다.

Create React App (CRA)

CRA는 React 애플리케이션을 위한 공식 빌드 설정 도구로, 단일 명령어로 React 프로젝트의 전체 개발 환경을 설정할 수 있게 해줍니다.

CRA의 주요 구성 요소와 역할

1. Webpack (모듈 번들러)

기능설명
번들링JavaScript, CSS, 이미지 파일 등을 하나의 파일로 묶거나 필요한 청크로 나누어 번들링
코드 분할애플리케이션을 여러 모듈로 나누고, 사용자가 필요할 때만 로드되도록 설정
HMR개발 중에 변경된 모듈만 즉시 업데이트하여 브라우저 새로고침 없이 변경 사항을 반영
에셋 관리이미지, 폰트, CSS 등의 자산을 모듈처럼 처리하고, 효율적으로 관리 및 최적화

2. Babel (트랜스파일러)

기능설명
트랜스파일링최신 JavaScript(ES6+), JSX, TypeScript 코드를 구버전의 JavaScript(ES5)로 변환
폴리필 제공오래된 브라우저에서도 최신 기능을 사용할 수 있도록 필요한 폴리필 포함

3. ESLint (린터)

기능설명
코드 품질 관리코드 스타일과 품질을 유지하도록 설정, 잠재적인 오류를 사전에 감지
개발자 피드백코드 작성 시 실시간으로 피드백을 제공하여, 코드의 문제를 즉시 수정할 수 있도록 지원

4. PostCSS (CSS 후처리기)

기능설명
CSS 최적화CSS 파일을 후처리하고, 브라우저 호환성을 위한 자동 접두사 추가(Autoprefixing) 등 최적화 작업 수행
CSS 모듈각 컴포넌트에 고유한 스타일을 적용할 수 있도록 CSS 모듈 지원

5. Jest (테스트 러너)

기능설명
테스트 자동화유닛 테스트와 통합 테스트를 쉽게 작성하고 실행할 수 있는 환경 제공
테스트 환경React 컴포넌트를 테스트하기 위한 환경을 제공, 다양한 시나리오에서 애플리케이션 검증 가능

6. React Scripts

기능설명
명령어 제공npm start, npm run build, npm test 등의 명령어를 통해 개발, 빌드, 테스트 작업을 간편하게 실행
설정 추상화복잡한 설정을 추상화하여, 개발자가 설정 파일을 직접 다루지 않고도 프로젝트를 쉽게 관리할 수 있도록 지원

7. 환경 변수 관리

기능설명
dotenv 사용.env 파일을 사용하여 개발, 테스트, 프로덕션 환경에서 사용할 환경 변수를 관리
보안 관리API 키나 설정 값을 안전하게 처리할 수 있도록 지원

CRA의 제한 사항

  • 높은 수준의 커스터마이징이 제한적입니다.
  • CRA의 공식 유지 보수가 중단되었습니다.

CRA의 대안

  • Vite: 빠른 개발 서버와 빌드 성능 제공
  • Next.js: 서버 사이드 렌더링, 정적 사이트 생성 등 추가 기능 제공
  • Remix: 고급 라우팅 및 데이터 로딩 패턴 제공

이러한 대안 도구들은 각각의 특징과 장점을 가지고 있으며, 프로젝트의 요구사항에 따라 선택할 수 있습니다.

profile
일잘러가 되어야지

0개의 댓글