mdx
はおもしろそう。カスタマイズはの記法はhugo
やjinja
よりも素直で簡単そうに見えた- GraphQL もわりと素直で簡単そうに見える
が、既存の markdown がわりとエラーになる。
- frontmatter が yaml 必要。toml 食えない。
<url> 記法
とか。エラーがあると全部失敗になる。
ということで、 python のスクリプトで既存の markdown を改変して様式を合わせることにした。
- frontmatter の yaml 変換
- 正規表現で
<url> 記法
除去 - frontmatter.title が無い場合に先頭の見出しを title に付け替える(sphinx の myst 向けの記事?)
MDXRenderer 無くなっているぽい
breaking change w
gatsby-plugin-mdx が 3 から 4 になるときに変更があって、 MDXRenderer が無くなって MDXprovider を使う方式に変わったぽい?
- https://www.gatsbyjs.com/plugins/gatsby-plugin-mdx
- https://www.gatsbyjs.com/docs/how-to/routing/mdx/
見よう見まねでセットアップしてなんとなく動いたのだが、
ちょっと変えたら動かなくなって、
調べていくとどうも最近のバージョンで MDXRenderer
が無くなったぽい。
というエラーメッセージが出て全然意味がわからなかったのだが、
MDXRenderer
が無くなっていて、import 失敗の結果出たエラーだったぽい。
わからねー。
いまバージョンはどうも Rendering 済みの children
を引数で受ける作法になっているぽい。
chidren を受けるには createPages
を以下のようにする。
要するにドキュメントに書いてあるとおりにする必要があるのだが、 内容を理解していないのと、古い情報との混在で難航したのであった。
gatsby-plugin-page-creator 無用
無くても動く。
というか createPages
を変わりにやってくれるものぽい。
かくして、白いサイトに戻った。
はまったおかげで gatsby のデータの流れがわかってきた。 適当に組み立てて行こう。
prism-react-renderer (syntax highlight) 導入
-
install prism-react-renderer
-
MDXProvider.components
-
gatsby-browser.js
の3ステップ。
これも難航したが、MDX v2
の情報を見分けることが重要。
MDXProvider
探索するべし。
layout
list
post
tags
tag できた。
gatsby の component システム、jinja
や hugo
の template と比べて
わかりやすくてパワーがあるね。
nvim
で作業しているのだけど、 LanguageServer の支援が受けられてすごい快適だ。
/tags/tag
各 tag から post へのリンク
/tags
tag の一覧
/posts/post to tag
各 post から tag へのリンク。 これだけ難易度が一個上。
gfm
autolink
gatsby-transform-json
tag 同士の関連付け実験。