Hono 4.13.13 macht app.mount() zur Middleware und kündigt das Ende der Methode in v5 an
Hono, das kleine TypeScript-Webframework für Cloudflare Workers, Deno, Bun, Node.js und andere Laufzeiten, hat am 4. Oktober Version 4.13.13 veröffentlicht. Die wichtigste Änderung ist ein neuer Weg, einen anderen Router oder Request-Handler in eine Hono-Anwendung einzubetten.
Was sich ändert. Bisher konnte eine Hono-App mit app.mount() ein Pfadpräfix an einen anderen Router wie itty-router übergeben oder an jede Funktion, die einen Request annimmt und eine Response liefert. Diese Fähigkeit gibt es jetzt als Mount-Middleware, importiert aus hono/mount. Weil sie nur ein Handler ist, wird sie mit einer gewöhnlichen Routenmethode registriert:
import { Hono } from 'hono'
import { mount } from 'hono/mount'
const app = new Hono()
app.all('/itty-router/*', mount(ittyRouter.handle))

Die Versionshinweise geben die Umstellung als eine Zeile an: Aus app.mount('/itty-router', ittyRouter.handle) wird app.all('/itty-router/*', mount(ittyRouter.handle)). Zu beachten ist der ausdrückliche Platzhalter im Pfad, den die alte Methode stillschweigend annahm.
Die Abkündigung. app.mount() funktioniert in Version 4 weiter, ist aber als veraltet markiert und wird in Version 5 entfernt. Ein Datum für Hono 5 nennt die Veröffentlichung nicht.
Weitere Korrekturen. JSX-Funktionskomponenten dürfen jetzt einen JSXNode zurückgeben, und ein Test simuliert einen Netzwerkfehler für eine nicht definierte Route im Antwortparser des Clients. Dokumentationskommentare einiger Request-Getter wurden berichtigt.
Zusammenhang. Die Änderung folgt der Richtung, die Hono in den jüngsten Patch-Versionen eingeschlagen hat: Funktionen aus der Kernklasse in separat importierbare Module zu verlagern. In 4.13.10 Ende September wanderten etwa die Laufzeitadapter in eigene Pakete.
Was das bedeutet
Für die meisten Anwendungen ändert sich heute nichts. Code, der Hono mit anderen Routern kombiniert oder während einer Migration alte Handler unter einem Präfix einhängt, sollte aber jetzt auf die Middleware umstellen. Das kostet eine Zeile, macht den getroffenen Pfad ausdrücklich und erspart eine erzwungene Änderung am Tag, an dem Version 5 erscheint.