개발하면서 정리한 기술 메모와 학습 기록을 모아 둔 VitePress 기반 블로그입니다.
- 사이트: https://blog.echo-youn.com
- 저장소: https://github.com/echo-youn/echo-log
- 주요 주제: Java, Kotlin, Spring, SQL, Docker, Cloud, AWS, Ansible, Kubernetes, 기타 개발 환경 이슈
.
├── docs/ # 문서 원본
│ ├── .vitepress/
│ │ ├── config.mts # VitePress 설정, 사이드바, 검색, 배포 경로
│ │ └── theme/ # 커스텀 테마 컴포넌트
│ ├── index.md # 홈 화면
│ ├── java/
│ ├── kotlin/
│ ├── spring/
│ ├── sql/
│ ├── docker/
│ ├── cloud/
│ ├── ansible/
│ └── etc/
├── .github/workflows/ # GitHub Pages 배포 워크플로
├── CNAME # 커스텀 도메인
├── package.json
└── README.md
Node.js 20.x 환경을 기준으로 합니다. GitHub Actions도 Node.js 20.x로 빌드합니다.
yarn install --frozen-lockfile
yarn docs:dev개발 서버는 VitePress 기본 포트인 5173에서 실행됩니다.
http://localhost:5173
package-lock.json도 함께 존재하므로 npm을 사용할 수도 있습니다.
npm install
npm run docs:dev다만 CI/CD는 yarn.lock 기준으로 동작하므로 의존성 변경 시에는 yarn.lock을 우선 관리합니다.
yarn docs:dev로컬 개발 서버를 실행합니다.
yarn docs:build정적 사이트를 빌드합니다. 결과물은 docs/.vitepress/dist에 생성됩니다.
yarn docs:serve빌드 결과물을 로컬에서 미리 확인합니다.
문서는 docs 하위에 Markdown 파일로 작성합니다.
- 주제에 맞는 디렉터리에 Markdown 파일을 추가합니다.
예:
docs/spring/example.md - 사이드바에 노출해야 하는 문서는
docs/.vitepress/config.mts의themeConfig.sidebar에 링크를 추가합니다. - 문서 간 링크는 VitePress 경로 기준으로 작성합니다.
예:
/spring/example - 로컬에서
yarn docs:dev로 확인합니다. - 배포 전
yarn docs:build로 빌드 오류를 확인합니다.
- 언어는
ko-KR입니다. - 기본 테마는 dark appearance를 사용합니다.
- 코드 블록 line number와 이미지 lazy loading이 활성화되어 있습니다.
- 검색은 VitePress local search를 사용합니다.
cleanUrls: true가 활성화되어 있어 URL에.html확장자가 붙지 않습니다.lastUpdated: true로 문서별 업데이트 시간이 표시됩니다.editLink는 GitHub의main브랜치 문서 수정 화면으로 연결됩니다.
main 브랜치에 push하면 GitHub Actions가 자동으로 빌드하고 GitHub Pages에 배포합니다.
배포 흐름은 다음과 같습니다.
- 저장소 checkout
- GitHub Pages 설정
- Node.js 20.x 설정
yarn install --frozen-lockfileyarn docs:builddocs/.vitepress/dist를 Pages artifact로 업로드- GitHub Pages 배포
커스텀 도메인은 CNAME의 blog.echo-youn.com을 사용합니다.
현재 설정은 VitePress 내장 local search입니다.
과거 Algolia DocSearch를 직접 크롤링하던 메모가 필요하면 아래 명령을 참고합니다. 이 방식은 별도의 Algolia 앱 설정, APP_ID, API_KEY, docsearch-config.json이 필요합니다.
# Linux
apt install jq docker
# macOS
brew install jq docker
touch .env
docker run -it --env-file=.env -e "CONFIG=$(cat docsearch-config.json | jq -r tostring)" algolia/docsearch-scraper관련 문서: