参考:Quartz v4でObsidianを公開した

Intro

Quartz v4でObsidianを公開する。

Method

Git Repoのセットアップ

GitHub: jackyzha0/quartz

commit: b397dae95113b0eaaf8054adf951fc533791bd0d

git clone https://github.com/jackyzha0/quartz.git
cd quartz
git branch stardev
git switch stardev
(GitHubでrepositoryを作成)
(originをGitHubのrepositoryに設定)
git push origin stardev
git branch --set-upstream-to=origin/stardev stardev

念の為、GitHub上でブランチの削除とforce pushをprotectした。

Quartzのセットアップ

Ref: Welcome to Quartz 4

nodenvで20.9.0をインストールした。

npm i
npx quartz create

すると、どのようにセットアップするか聞かれた。ひとまず、

  • Choose how to initialize the content…: iCloud上のObsidian Vaultへのsimlink
  • Choose how Quartz should resolve links…: Treat links as shortest path

と選択。

Configを設定

Ref: Configuration

以下のように設定した。

項目
PageTitleStarDev
analyticsnull
localeja-JP
baseUrlblog.dojang.jp
ignorePatterns”Untitled”を追加

このページ自体をObsidianで記述しているため、npx quartz build --serveで正常に描写されるか確認する。 (追記:現状のQuartzの設定はQuartzのカスタマイズを参照。)

Gitで追跡

gitにここまでの変更をコミットし、npx quartz sync --no-pull。 ここで気づいたが、contents/をiCloud上へのシンボリックリンクに設定しているため、少々特殊なことが起こっているようだ。

Detected symlink, trying to dereference before committing

quartz syncを実行した時の動作は以下のようになっているように見受けられる。

  1. contents/のシンボリックリンクを解除
  2. contents/配下のファイルをコピー
  3. コミット
  4. シンボリックリンクを元に戻す
  5. 何らかのpush?(おそらく、「v4」ブランチをpushしている)

そのため、この実行後はシンボリックの部分が常にstageされていないという表示になる。 これを無視するとして、記事を書いた後は以下のように操作すれば良いこととなる。

npx quartz sync --no-pull
git push

デプロイ

Cloudflare Pagesでデプロイすることにした。 Ref: Cloudflare Pages

ブランチ名だけstardevに設定し、後は記事の通りに進めた。

Cloudflareでのドメインの設定は、Pagesの中の「Custom domains」タブから設定した。画面の指示に従うだけだったので、すんなりと設定できた。

Last Words

これからQuartzを色々いじってみて、カスタマイズしていきたい。 具体的には、

  • quartz sync時のブランチ名の変更
  • その他の機能の理解

を試す。

また、今回はquartzのセットアップ時に既存のObsidian Vaultへのシンボリックリンクを置く選択をしたため、アクセスのトップ時に404が出ていた。これは、index.mdを作成することで解決した。