2023-01-02

lume との格闘

Table of Contents

やったこと

  • lume と格闘していた
  • 散歩とドライブをした
  • 本を読んだ

lume の理解が深まった一日だった。 生活習慣が壊れかけなので、なんとか矯正する必要がある。

lume で型付けを頑張るのはしんどい

PCを触っていた時間のほとんどが lume との格闘だった。昨日も書いたけど、JSX (TSX)使いからするとこいつは型付けがしんどいフレームワークといえる。lume の API は Nunjucks などのテンプレートエンジンからみた easy さに最適化されている印象で、これをTSの世界から扱おうとすると結局 lume のソースを読んで内部実装を考えながら型の整合性をとることになる。これではTSが全然活きない。

特にページを操作するような機能ではこの傾向が顕著で、ページの境界やページ生成の処理を書くときはかなり気持ちの悪い型付けを頑張る必要がある。 トップページの一覧機能を実装するために SearchPaginate をTSで使おうとしたら大変だった。自作自演の型付けをすることになるし、その労力によって得られるメリットは時間が潰せることくらい。暇人用の苦行コースである。

「ただ使える」ことと「メンタルモデルと合致している」ことは別なんだと再確認する機会だった。進捗はダメでも学びがあったのでよしとします。

型付けに挫折した敗北者こと俺は結局どうしたかというと、一覧機能ページに Nunjucks くんを登用。ライブラリの Author が喜びそうなコードを書いて very easy に一覧機能を作成!最初からこうすればよかった!途中で萎えてクソ適当なマークアップとスタイルにしちゃったし!やる気がでたら直します!

lume の絶対パスの設定がわかりにくかった

GitHub Pages にデプロイすると、周知のとおり domain/repository-name/ にコンテンツが配置される。このとき、絶対パスで指定している情報(トップページへのリンクや、一覧ページから各ポストへのリンクなど)が domain/repository-name/path とならず domain/path として生成されてしまい、Pages 上で実際のコンテンツとリンクに不整合が起きる問題があった。

一応 ドキュメント にしたがってlocationの設定をしていたのだけど、どうもこれが読み込まれていないようだった。 バグか?と思いながらlume本体のコードを読んでいて判明したのは、この location の設定は Base path というプラグインと併用するものだということ。プラグインの方にはそれっぽいことが書いてあるけど、本家 location のほうには曖昧な記述しかない。これはさすがにドキュメントが悪いと思う。コントリビュートチャンスかもしれない。

気になった記事


昨日に引き続き、また書きすぎた。