이전 글에서, Quartz를 이용한 블로그 사이트 구축에 대해 다뤘습니다. 이 글은 그 과정에서 있었던 플러그인 커스텀에 대해 다룹니다.

BasesPage 플러그인

BasesPage 플러그인은, Quartz에 옵시디언의 .base 파일 및 일반 문서의 base 문법을 렌더링하도록 하는 기능을 추가합니다.

참고로, 플러그인을 포함한 여러 설정은 프로젝트 루트의 quartz.config.yaml에서 수정할 수 있습니다.

문제점

기본 옵시디언 앱에서, 태그를 렌더링할 땐 모두

Pasted image 20261028070108.png

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

Pasted image 20261028070345.png

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 명령어로 어떻게 렌더링되나 테스트했습니다.

Pasted image 20261028072113.png

다행히 한 번에 아무 문제가 없이 의도한 대로 작동했습니다!
감사합니다 gpt님

코드

잘 렌더링된다고 해서, 아직 끝난 게 아니었습니다. 바로 원본 플러그인 제작자가 작성한 테스트도 통과해야 진정한 끝이라고 할 수 있습니다.

pnpm run check

그렇게 큰 수정이 아니라서 그런지, 다행히 이것도 한 번에 통과할 수 있었습니다.

풀 리퀘스트

이제 제 수정을 원본 레포지토리에도 반영해서, 기여를 할 시간입니다. 풀 리퀘스트를 작성했는데, 제 것이 아닌 다른 사람의 레포지토리에 PR 작성하는 건 처음이었습니다. 제대로 작성한 거 맞겠죠…

후기

어떻게 보면, 이번 일은 제가 처음으로 오픈소스에 구체적인 기여를 한 일이 된 것 같습니다. 지금까지 오픈소스를 쓰기만 했는데, 보잘것없지만 뭔가 했다는 게 느껴졌습니다. 이번에는 처음 기여해보는 거라 익숙하지 않아 포크하고 PR 넣고 하는 것까지 다 기록했지만, 나중에는 이런 과정을 당연히 여기는 제 자신을 발견할 수 있게 되면 좋겠습니다.