최근 Nextjs로 개인프로젝트를 진행하며 임시로 배포할일이 생겼는데, 그 당시 Github Pages를 사용하여 배포했던 방법을 이번 포스팅에 정리해봤습니다.
Github Pages는 레파지토리에 저장된 정적페이지를 무료로 호스팅 해주는 서비스이다.
기본적으로 Github는 username.github.io 또는 username.github.io/repository와 같은 도메인 주소를 사용하게 되지만 커스텀 도메인으로도 사용가능하다
만들었던 프로젝트를 깃허브를 통해 배포하는 과정으로는 build용 파일을 생성한 후 그 파일을 gh-pages브랜치에 올려야한다. 이런 과정을 Github page 패키지를 통해 조금이나마 간소화 할 수 있다.
npm install --save gh-pages
package.json에서 homepage 연결 및 deploy와 predeploy를 같이 추가합니다.
...
"homepage": "https://깃허브아이디.github.io/레파지토리이름/",
scripts : {
"build": "next build && next export",
"predeploy": "npm run build",
"deploy": "touch out/.nojekyll && gh-pages -d out --dotfiles"
},
...
추후 npm run deploy 명령어로 배포를 시작한다면 predeploy -> deploy 순으로 진행된다. 그래서 그 predeploy와 deploy가 하는일로는....
Next.js로 만든 프로젝트를 깃허브에 배포할 때, 배포된 사이트에 css가 적용되지 않은것을 볼 수 있다.
이때는 next.config.js에서 assetPrefix(js,css,이미지파일 등을 접근할때 사용하는 변수)변수에서 경로를 수정해주면 된다.
module.exports = {
assetPrefix:
process.env.NODE_ENV === "production"
? "https://깃허브아이디.github.io/레파지토리이름"
: "",
};
npm run deploy
npm run deploy 후 'Published'가 뜨면 성공이다.
이렇게 배포에 성공한다면 gh-pages라는 브랜치가 자동으로 생성되며, 해당 브랜치에 build 파일들이 업로드된다.
중요한 API키 등의 환경변수들은 깃허브, 오픈소스에 올려면 안되는데, 이것은 github actions Secrets에 올리면 된다.