리액트 환경에서 생성한 SPA의 state
JSX
<Component>
props
같은 문법들은 브라우저가 해석할 수
없어 그대로 배포할 수 없다.
이런 문법들을 CSS
JS
HTML
문법으로 바꿔주는 작업이 필요하다. 이러한 작업을 컴파일(comfile)
또는 빌드(build)
라고 한다. (웹팩의 기능이다. )
배포하고자 하는 react 앱의 root 에서 터미널을 통해 gh-pages
를 설치해준다.
$ npm i gh-pages
설치가 정상적으로 완료됐다면 package.json
의 dependencies
에 gh-pages
가 생성된다.
App()
에서 BrowserRouter
에 basename
프로퍼티 추가
<BrowserRouter basename={process.env.PUBLIC_URL}>
Link
를 통해서 페이지에 접속한 것이 아니라 직접 URL
을 작성해서 접속 한 경우 컴포넌트가 불러와지
지 않는다. 이를 방지하기 위해 location.state
가 정의되어 있지 않으면 '/'
즉, 홈 으로 이동하는 리
다이렉트 기능을 추가한다.
const navigate = useNavigate();
/* location.state가 정의되어있지 않으면 홈으로 이동, 리다이렉트 기능 */
if (location.state === undefined) {
navigate('/');
}
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가 뜨면 성공적으로 배포가 된 것이다.