[React-Native] Expo 프로젝트에 Next.js 설치하기 (Feat. Bare WorkFlow)
개요
최소 구현 모델인 MVP 로
우리는 OpenSea 를 오마주한 마켓플레이스를 구현하고자 한다.
기획했던 팀 프로젝트에 사용되는 스택으로
React-Native 가 채택되어 사용해야하는 상황이었다.
하지만,
현재 구성된 팀원으로는
프론트1 백엔드1 컨트랙트1 기획 & 디자인1 이었고,
결과물로 제출할만한 시간이 충분하지 않은 시간이었다.
회의를 통해
이번 프로젝트는 하이브리드 앱으로 구현하기로 결정했고,
앱과 웹을 동시에 띄우는 작업을 해야만 했다.
마침 사용하려던 Expo Docs 를 살펴보니,
웹 용 Next.js 를 지원하는 템플릿이 존재하여 이를 테스트 해 보려고 한다.
세팅 및 환경설정
공식문서를 참조하여 Expo 앱에 Next.js 를 설치하려한다.
https://docs.expo.dev/guides/using-nextjs/
npx create-expo-app -e with-nextjs
해당 명령어를 통해 설치된 프로젝트의 파일 구조는 이러하다.
Next.js 로 init 을 한 경우와 다소 차이가 있다.
에러가 발생한 경우
npx create-expo-app -e with-nextjs
위 명령어를 통해 프로젝트를 생성하려고 입력하니 다음과 같은 에러가 발생했다.
입력한 프로젝트 이름을 가진 디렉토리가 생성되어
내부 파일구조를 살펴보니 ./node_module
이 없이 설치되어있었다.
이를 해결하기 위해
에러 메세지에 나와있듯 npm install
부분에서 발생하였기 때문에,
yarn install
명령을 통해 추가 패키지들을 설치 해 주었다.
Bare Workflow
설치된 프로젝트의 파일 구조를 살펴보면
Expo 앱의 형태인것을 확인할 수 있다.
Expo 는 실제 개발에 사용될 수 있는 환경이 아니다.
즉, 설치가 가능한 독립형 앱(Real app)이 아니라는 뜻 이다.
이를 보완하기 위해 Bare Workflow 를 사용할 것이다.
Bare Workflow 는 Expo 이지만,
React-Native 와 조금 더 가까운 템플릿 이라고 할 수 있다.
Expo 에서 React-Native 용 라이브러리를 사용할 수 없는 문제 등을 해결하기 위해 베어워크플로우를 사용
설치된 Expo 프로젝트를 Bare Workflow 모듈로 변환하기 위해
expo eject
명령어를 입력해 실행한다.
해당 명령어를 통해 Expo Cli 가 프로젝트 설정을 Bare Workflow 로 업데이트 하고,
필요한 파일과 폴더 등을 생성해 준다.
expo install
해당 명령어를 통해 Expo Bare Workflow 프로젝트를 초기화 한다.
Expo Cli 가 Package.json 파일을 확인하고,
Bare Workflow 프로젝트에 필요한 종속성을 자동으로 설치 -> Android 폴더 생성
생성된 파일 구조 확인
모든 세팅을 마치고,
프로젝트를 실행하여 w 옵션과 a 옵션을 통해
웹 과 앱을 동시에 띄워보고,
그 안의 내용을 수정하여 정상적으로 반영됨을 확인하였다.
Reference
https://velog.io/@soominchoi/Expo-with-NextJS
https://docs.expo.dev/guides/using-nextjs/