Next.jsを10へ・markdown 処理をちょっと変えた / 2020年11月23日
今日から旅行の予定だったのだけど、昨日の午後から妻の体調が崩れ、夜には明日から旅行できる感じの体調ではなくなってしまったので、昨日の晩にキャンセルしたのであった。早く良くなるとよいな。
することも(看病以外は)特に無くなったので、午前中は仕事をして午後はこれまた安オールドレンズであるロシア製 Helios 44M を持って少し散歩をする。トップの写真、釣りおじいちゃんたちはカスタマイズした釣りチャリに乗って釣り場に現れるのだけど、その自転車。電動自電車も多く、お年寄りの負担も軽そうだ。
Next.js 10 が出ていたので、このウェブサイトの Next.js を 9 から 10 にする。とりわけ問題無く動いている、ように思える。このウェブサイトは国際化しないから関係ないけど、Internationalized Routingが標準機能に入ったのは嬉しいね。これで ja.example.com / zh-cn.example.com などのドメインや example.com/ja/xxx なんかのpathでの言語ごとの変更が簡単にできるように。
そろそろ実装されてもよいのでは、と思っている rss(xml) などの html ではないコンテンツの静的な出力は需要がないのか未だに Next.js ではできないのだけど…。
ついでにmarkdown周りの処理にも手を入れたくなってきた。いままで markdown から html への処理は、何も考えずにremark-htmlまかせにしていたのだけど、unifiedを使った処理へと変更。まずは remark-html と同じような出力にするために
remark().use(remarkHtml).processSync(markdown).toString()
を
unified()
.use(remarkParse)
.use(remarkRehype, { allowDangerousHtml: true })
.use(rehypeStringify, { allowDangerousHtml: true })
.processSync(markdown)
.toString()
みたいな処理へと変更する。実際の処理工程は remark-html のときと変わっていないはず。実装やドキュメントをちょっと読むと、各種処理の内側では rehype のほうでは HTML に特化したASTの hastを、remark のほうでは markdown AST のmdastを、hast-util-*やmdast-util-*、大本ツリー仕様であるのunistのunist-util-*を使っていじる感じなのね。