Posts

[React] 리액트 프로젝트 Github 배포

목차7

리액트 환경 프로젝트 Github 배포

리액트 환경에서 생성한 SPA의 state, JSX, <Component>, props 같은 문법들은 브라우저가 해석할 수 없어 그대로 배포할 수 없다.

이런 문법들을 CSS JS HTML 문법으로 바꿔주는 작업이 필요하다. 이러한 작업을 컴파일(comfile) 또는 빌드(build) 라고 한다.

웹팩이 이러한 컴파일이나 빌드의 기능을 처리한다.

gh-pages 설치

배포하고자 하는 react 앱의 root 에서 터미널을 통해 gh-pages 를 설치해준다.

코드
npm i gh-pages

설치가 정상적으로 완료됐다면 package.json 의 dependencies 에 gh-pages 가 생성된다.

App()컴포넌트에 프로퍼티 추가

App()에서 BrowserRouter에 basename프로퍼티 추가

코드
<BrowserRouter basename={process.env.PUBLIC_URL}>

Link를 통해 이동되어져야만 하는 페이지에 useNavigate함수 사용

Link를 통해서 페이지에 접속한 것이 아니라 직접 URL을 작성해서 접속 한 경우 컴포넌트가 불러와지지 않는다.

이를 방지하기 위해 location.state 가 정의되어 있지 않으면 '/' 즉, 홈 으로 이동하는 리다이렉트 기능을 추가한다.

코드
const navigate = useNavigate();
/* location.state가 정의되어있지 않으면 홈으로 이동, 리다이렉트 기능 */
if (location.state === undefined) {
  navigate('/');
}

Homepage url 설정

package.json 의 가장 밑에 homepage 를 추가해준다. 이 URL은 배포 된 사이트의 URL이 된다.

코드
"https://깃허브닉네임.github.io/프로젝트명"

배포 명령어 추가

package.json 의 scripts 에 predeploy 와 deploy 를 추가해준다.

  • **"deploy" : "gh-pages -d build"
    **npm run deploy 을 실행 했을 때 build directory 를 배포한다.
  • **"predeploy" : "npm run build"
    **npm run deploy 을 실행 했을 때 deploy 가 수행되기 전에 build 를 한다.
    predeploy 는 deploy 전에 먼저 실행한다는 뜻이다. 이를 통해 build와 deploy 를 한 번에 실행 할 수 있다.

배포하기

터미널에 npm run deploy 명령어를 입력한다.

코드
npm run deploy

Published가 뜨면 성공적으로 배포가 된 것이다.

반응형