이전 글에서, Quartz를 이용한 블로그 사이트 구축에 대해 다뤘습니다. 이 글은 그 과정에서 있었던 플러그인 커스텀에 대해 다룹니다.
BasesPage 플러그인
BasesPage 플러그인은, Quartz에 옵시디언의 .base 파일 및 일반 문서의 base 문법을 렌더링하도록 하는 기능을 추가합니다.
참고로, 플러그인을 포함한 여러 설정은 프로젝트 루트의 quartz.config.yaml에서 수정할 수 있습니다.
문제점
기본 옵시디언 앱에서, 태그를 렌더링할 땐 모두

이런 클릭 가능한 링크로 렌더링됩니다.
그렇지만,

BasesPage 플러그인을 통해 렌더링하면 태그 항목이 일반적인 텍스트로 렌더링되어, 편의성이 저하된다는 문제가 있었습니다. 저는 이것들도 태그 페이지로 연결되도록 하고 싶었습니다.
플러그인 커스텀
제가 오픈소스에 기여하는 첫 번째 사례였기 때문에, 그 절차를 아래에 정리하고자 합니다.
저장소 포크
먼저, BasesPage 레포지토리에서 저장소를 포크합니다. 저는 원본 저장소에 푸시할 권한이 없기 때문에, 수정된 코드를 깃허브에 올리기 위해서는 다른 저장소가 필요하기 때문입니다.
git clone https://github.com/ym-0x309/bases-page-fork.git
cd bases-page-fork이후 해당 저장소를 로컬에 클론한 뒤 코드 수정을 시작했습니다.
코드 수정
여기서부터 문제인데, 저는 웹 개발 지식이 부족하기 때문에 코드를 읽는 건 몰라도 직접 코드를 쓸 능력이 부족하다는 것이었습니다. 결국 저는 제 능력 부족을 인정하고, GPT의 도움을 받았습니다.
Codex도 안 쓰고 그냥 웹 버전에서 했는데, 생각보다 상당히 똑똑해져서 시키지도 않았는데 알아서 원본 레포지토리에서 소스 코드를 참고해서 수정 사항을 알려주더라고요… 그래서 저는 할 게 생각보다 없었습니다.
git checkout -b tag-support
git add .
git commit -m "added tags support"
git push origin tag-support이후 포크한 제 저장소에 푸시했습니다.
테스트
렌더링
태그가 의도한 대로 잘 렌더링되는지 보기 위해서는, 원본 BasesPage 플러그인을 비활성화하고 제 커스텀 플러그인을 설치해야 했습니다.
- source: "@quartz-community/bases-page"
enabled: false- source: "github:ym-0x309/bases-page#tags-support"
enabled: true그래서 quartz.config.yaml에서 위의 두 내용을 추가하고, pnpm quartz buld --serve 명령어로 어떻게 렌더링되나 테스트했습니다.

다행히 한 번에 아무 문제가 없이 의도한 대로 작동했습니다!
감사합니다 gpt님
코드
잘 렌더링된다고 해서, 아직 끝난 게 아니었습니다. 바로 원본 플러그인 제작자가 작성한 테스트도 통과해야 진정한 끝이라고 할 수 있습니다.
pnpm run check그렇게 큰 수정이 아니라서 그런지, 다행히 이것도 한 번에 통과할 수 있었습니다.
풀 리퀘스트
이제 제 수정을 원본 레포지토리에도 반영해서, 기여를 할 시간입니다. 풀 리퀘스트를 작성했는데, 제 것이 아닌 다른 사람의 레포지토리에 PR 작성하는 건 처음이었습니다. 제대로 작성한 거 맞겠죠…
후기
어떻게 보면, 이번 일은 제가 처음으로 오픈소스에 구체적인 기여를 한 일이 된 것 같습니다. 지금까지 오픈소스를 쓰기만 했는데, 보잘것없지만 뭔가 했다는 게 느껴졌습니다. 이번에는 처음 기여해보는 거라 익숙하지 않아 포크하고 PR 넣고 하는 것까지 다 기록했지만, 나중에는 이런 과정을 당연히 여기는 제 자신을 발견할 수 있게 되면 좋겠습니다.