POSIX 쉘(POSIX Shell)을 사용하여 정적 사이트를 생성하는 방식에 대한 기술적 구현을 상세히 설명함
템플릿 엔진(Template Engine) 대신 envsubst를 활용하여 환경 변수를 치환하는 방식을 채택함
GitHub Actions을 통한 자동 빌드 및 배포 과정을 통해 지속적인 사이트 관리를 용이하게 함
커뮤니티에서는 쉘 스크립트(Shell Script)의 단순성(Simplicity)과 접근성(Accessibility)에 긍정적인 평가를 내림
본 시스템은 POSIX 쉘(POSIX Shell)을 사용하여 정적 사이트를 생성하며, 각 포스트는 메타데이터와 마크다운(Markdown)을 결합하여 HTML 템플릿을 채운다. 템플릿 엔진 대신 envsubst를 활용하여 환경 변수를 치환함으로써, 템플릿의 단순성을 유지하고 쉘 스크립트의 명시성을 확보한다. 특히, 이미지 및 링크의 URL을 처리하기 위해 정규 표현식(Regular Expression)을 사용하여 상대 경로 문제를 해결한다.
GitHub Actions을 사용하여 코드 변경 시 자동 빌드 및 배포를 수행한다. 이 과정은 comrak을 사용하여 마크다운(Markdown)을 HTML로 변환하는 단계를 포함하며, 30초 이내에 변경 사항이 반영된다. 이러한 자동화된 빌드 프로세스는 개발자가 사이트 관리에 소요되는 시간을 줄이고, 지속적인 통합(Continuous Integration) 및 지속적인 배포(Continuous Delivery)를 가능하게 한다.
이 시스템은 각 포스트에 대한 태그를 관리하고, 태그별로 페이지를 생성한다. 쉘 스크립트는 각 태그에 대한 HTML 및 피드(Feed)를 생성하기 위해, eval을 사용하여 태그 인덱스를 계산하고, 해당 인덱스에 따라 포스트 슬러그(Post Slug)를 할당한다. 결과적으로, /tags 페이지를 통해 모든 태그와 해당 태그가 포함된 포스트를 쉽게 확인할 수 있다.
RSS, Atom, JSON 형식의 피드(Feed)를 생성하여 콘텐츠 배포를 지원한다. 특히, Atom 피드는 RSS보다 간결하고 명확한 스펙을 가지고 있어, 사이트 운영자가 선호하는 방식이다. 사이트맵(Sitemap)은 스크래핑 봇(Scraping Bot)의 편의성을 높이는 역할을 하지만, 접근성 측면에서는 큰 이점이 없다는 의견도 존재한다. 따라서, Atom 피드 유지를 통해 효율적인 콘텐츠 관리를 추구한다.