build & GitHub Pages로 배포
2022. 11. 11. 22:47ㆍStudy/React
build는 왜해?
우리가 만든 react 프로젝트를 웹에 배포하려면 build용 파일을 생성 후 그걸 웹에 올려야 한다.
왜냐면, 브라우저는 HTML, CSS, JS 3개의 언어만 해석할 수 있다.
리액트의 이상한 state, JSX 같은 문법은 해석할 수 없다.
그래서 react 프로젝트 build라는걸 하게 되면 브라우저 친화적인 HTML, CSS, JS파일로 바꿔준다.
이것을 컴파일 또는 build라고 한다.
GitHub Pages 배포를 위해 GitHub 계정을 만들도록 하자!
배포하기 전 체크사항
1. npm start 로 미리보기 시 콘솔창, 터미널에 에러가 있으면 안된다.
2. 경로문제
사이트를 배포할 때 http://sitename.com/에 에 배포하는 경우엔 따로 설정이 필요하지 않지만
http://sitename.com/react/ 처럼 하위 경로에 배포할 때는 프로젝트 설정이 필요하다.
package.json 파일에 homepage라는 키 값을 추가해야 한다.
{
"name": "shop",
"homepage": "https://aluvy.github.io/react_shop",
...
그리고 react router가 설치되어 있다면 라우터가 제공하는 basename="" 속성을 추가한다.
자세한 내용 : https://create-react-app.dev/docs/deployment/#building-for-relative-paths
// src/index.js
<BrowserRouter basename="/react_shop">
build
별 문제가 없다면 이제 터미널에 build 명령어를 입력한다.
build가 완료되면 작업폴더 내에 build폴더가 생성된다. 이것을 서버에 올린다.
npm run build
질문
Q1. 첫 페이지 로딩 속도를 빠르게 하려면?
원래 리액트, 뷰로 만든 웹앱들은 첫 방문시 필요한 파일을 전부 로드합니다.
트래픽을 조금이라도 줄이고 싶으면 컴포넌트들을 lazy하게 로딩하는 방법을 사용할 수도 있습니다.
공식 튜토리얼에 있는 lazy 함수 : https://reactjs.org/docs/code-splitting.html#route-based-code-splitting
Q2. build 시 압축 시키지말고 남기고 싶은 파일은?
/public/ 폴더 안에 넣는다.
/public/ 폴더 안에 있는 파일을 사용하려면 페이지 상단에 절대경로로 import 한다.
Q3. 메인페이지 말고 왜 특정 페이지로 접속하면 404 에러가 뜨나요?
서버단 언어로 해결하거나
URL에 # 기호가 붙는 hashRouter를 사용해야 한다. (단점: 검색엔진이 읽지 못함)
'Study > React' 카테고리의 다른 글
public, src 이미지 사용 시 경로, 사용법 (0) | 2022.11.11 |
---|---|
react Bootstrap (0) | 2022.11.11 |
Component 만드는 또 다른 문법 class (0) | 2022.11.11 |
state를 이용하여 input 입력값 가져오기 (0) | 2022.11.11 |
props (0) | 2022.11.11 |