以前に remark-directive
を有効化して構文拡張をサポートしたが、この方法で追加される構文がどうも気に入らなかったので MDX を部分的に有効化する方針に変更した。
ここで「部分的」というのは、MDX がサポートしている拡張のうち HTML として解釈し得るようなものだけを使用するという意味であり、具体的には micromark
の拡張機能のうち micromark-extension-mdx-jsx
と micromark-extension-mdx-expression
のみを有効化し、さらに JSX 内で <SomeComponent foo={bar}>
のように JavaScript 部分を解釈する必要がある場合を除外するようにした。
ここで micromark-extension-expression
を有効にしているのは、MDX 側に HTML 形式でのコメントがサポートされておらず、
...
{/* some comment */}
...
のような形式でコメントが記述できるようにしておくためで、現状は { ... }
内の記述をすべてスルーすることで対処している。
じゃあもう最初から MDX 全サポートすれば良いじゃんという話ではあるが、そこまで大それた機能拡張が出来る程の用途は意図していないのと、将来的に他のブログシステムに移行したいと思ったときに MDX を前提にしてしまうと色々面倒そうだなぁと予想されるので、今のところは生 HTML としてギリギリ解釈できそうな所で落ち着かせることにした。
結果的に何とも言えない中途半端なところに落ち付いてしまった感は否めないので、すぐに別の解決策に乗り替える可能性はあるが、とりあえずこの方針で進めてみましょう…