clomie.dev

linjar

JSX を HTML や XML を生成するテンプレートエンジンとして使うための npm モジュール linjar を作った。

先月末に ウェブサイトの実装を変えた でも書いたが、 preactpreact-render-to-string を使ってこのウェブサイトの HTML やフィードの XML を生成していた。

preact は十分小さいライブラリだと思うけど、ただのテンプレートエンジンとして使うだけなら diff などの仮想 DOM としての機能やライフサイクルフックは不要になる。最初からテンプレートエンジンとして作るならもっと削れるはず、というのが主な動機になっている。

実装は preact をもちろん参考にしたが、 h 関数で VNode を作るところまでの型定義は少し悩ましい部分が多かった。この部分は Deno 向けの JSX Renderer の実装がとても参考になった。

最低限必要な機能はひと通り実装した。 1.0.0 を publish してから実際に使ってみたら少しバグっていて、既に2回もパッチバージョンを上げてしまった。最初は 0.0.x でリリースすれば良かったかもしれない。

npm モジュールを作るのは初めてだったけど、ハードルがとても低い。ライブラリ名さえ決まれば、 npmjs.com にアカウントを作って npm publish コマンドを打てばすぐに公開できてしまう。公開にあたっては TypeScript で npm パッケージを作る - 30歳からのプログラミング がとても参考になった。

既にこのウェブサイトの生成も linjar を使った実装に置き換えたので、あとはドッグフーディングしながらやっていきたい。とりあえず ES Modules 周りを雰囲気で使っているので、これを機にちゃんと理解したいと思っている。