Expo 프로젝트 구조 한 번에 정리하기: 처음 열면 보이는 파일들 이해하기
Expo로 프로젝트를 생성하고 나면
생각보다 많은 파일이 한꺼번에 생긴다.
이 파일들… 다 써야 하나?
App.js만 보면 되는 거 아냐?
건드리면 안 되는 건 뭐지?
처음엔 구조를 정확히 이해하지 않아도
앱은 실행된다.
하지만 폴더 역할을 모르고 시작하면
조금만 커져도 금방 헷갈린다.
이 글에서는
Expo 프로젝트를 처음 열었을 때 꼭 알아야 할 구조만
실무 기준으로 정리한다.
이 글이 필요한 사람
- Expo로 React Native 프로젝트를 처음 만든 경우
- App.js 외에 뭐가 뭔지 헷갈리는 경우
- 나중에 구조를 어떻게 나눠야 할지 감이 안 오는 경우
Expo 기본 프로젝트 구조 전체 보기
Expo 기본 템플릿을 생성하면
대략 이런 구조를 보게 된다.
my-app
├─ App.js
├─ app.json
├─ package.json
├─ assets/
├─ node_modules/
└─ babel.config.js
처음엔 전부 중요해 보이지만,
실제로 자주 만지는 건 일부다.


App.js – 앱의 시작점
가장 먼저 보게 되는 파일이다.
export default function App() {
return (
<View>
<Text>Hello Expo</Text>
</View>
);
}
- 앱이 실행되면 가장 먼저 렌더링되는 컴포넌트
- 처음에는 거의 모든 코드를 여기서 시작한다
초반에는 App.js 하나로도 충분하다.
구조 분리는 익숙해진 다음 해도 늦지 않다.
app.json – 앱 설정 파일
app.json은
앱 자체의 메타 정보를 담는 파일이다.
{
"expo": {
"name": "my-app",
"slug": "my-app",
"version": "1.0.0"
}
}
여기서 설정하는 것들:
- 앱 이름
- 앱 아이콘
- 스플래시 화면
- 앱 버전
- 권한 설정 일부
⚠️ 주의
- 자주 수정하는 파일은 아니다
- 빌드나 배포 단계에서 중요해진다
package.json – 의존성 관리의 핵심
웹 개발을 해봤다면 익숙할 파일이다.
{
"scripts": {
"start": "expo start"
}
}
- 설치된 라이브러리 목록
- 실행 스크립트 정의
- 프로젝트의 기술 스택 정보
React Native든 Expo든
모든 시작과 끝은 package.json이라고 봐도 된다.
assets/ – 이미지, 폰트 보관소
정적인 리소스를 넣는 폴더다.
- 이미지
- 아이콘
- 커스텀 폰트
<Image source={require('./assets/icon.png')} />
실제로 써보면
이미지 경로 정리는 초반부터 습관 들이는 게 좋다.
node_modules/ – 건드리지 않는 영역
- 설치된 라이브러리 실제 코드
- 자동 생성
- 수정 ❌
문제가 생기면
삭제 후 재설치는 해도,
직접 수정하는 일은 거의 없다.
babel.config.js – 트랜스파일 설정
초반에는 거의 볼 일이 없다.
- JavaScript 문법 변환 설정
- 라이브러리 설정에 따라 간혹 수정
입문 단계에서는
“아, 이런 게 있구나” 정도면 충분하다.
언제 구조를 나누기 시작하면 좋을까
처음에는
App.js 하나로 시작하는 게 맞다.
하지만 이런 순간이 오면
구조 분리를 고민하면 된다.
- 화면이 2개 이상 생겼을 때
- 컴포넌트가 길어졌을 때
- 재사용 UI가 보이기 시작할 때
보통은 이런 식으로 나눈다.
src/
├─ screens/
├─ components/
├─ hooks/
└─ utils/
이건 조금 익숙해진 다음 다룰 주제라
다음 글에서 따로 정리할 예정이다.
실무 기준으로 기억할 포인트
처음 Expo 프로젝트에서
진짜 중요한 건 이것뿐이다.
- App.js → 앱의 시작
- app.json → 앱 설정
- assets → 이미지/폰트
- package.json → 라이브러리 정보
나머지는
지금 당장 몰라도 개발은 가능하다.
정리
- Expo 프로젝트 구조는 생각보다 단순하다
- 초반엔 App.js 중심으로 개발하면 된다
- 설정 파일은 “언제 쓰는지”만 알아두면 충분하다
- 구조 분리는 익숙해진 뒤에 해도 늦지 않다
다음 글에서는
**React Native 기본 컴포넌트(View, Text, Image)**부터
본격적으로 화면을 만들어보려고 한다.