Serveur Hono TypeScript : démarre-le en 10 lignes claires
Apprends à lancer un serveur Hono en TypeScript en dix lignes seulement. Suis la bonne pratique pour un backend léger, prêt pour routes, auth et IA.
Pourquoi seulement 10 lignes suffisent
Tu veux juste répondre "Comment je démarre un serveur Hono maintenant ?".
Voici le listing complet du fichier. Il tient sur dix lignes actives :
1import { serve } from "@hono/node-server";2import "dotenv/config";3import { Hono } from "hono";4import { getCookie } from "hono/cookie";5import Dashboard from "./components/Dashboard.js";6import GenerateImageForm from "./components/GenerateImageForm.js";7import LandingPage from "./components/LandingPage.js";8import Layout from "./components/Layout.js";9import RegisterForm from "./components/RegisterForm.js";10import { parseEnv } from "./env.js";11import auth from "./routes/auth.js";12import imageGeneration from "./routes/image-generation.js";13import users from "./routes/users.js";14import { getAllTokens, getExistingToken } from "./token.js";15import { TOKEN_COOKIE_NAME } from "./utils/cookie-utils.js";1617parseEnv();1819const app = new Hono();2021/* --- next snippet --- */2223serve(24{25fetch: app.fetch,26port: 3000,27},28(info) => {29console.log(`Server is running on http://localhost:${info.port}`);30},31);
1. import { serve } from "@hono/node-server";
Hono fournit son propre utilitaire serve.
Pourquoi ? Tu évites la configuration d’un serveur HTTP bas-niveau.
2. import "dotenv/config";
Charge tes variables d’environnement avant toute exécution.
Rappel : place un fichier .env à la racine pour stocker tes secrets.
3. import { Hono } from "hono";
Instancie le micro-framework.
Hono expose une API minimaliste façon Express mais plus rapide.
4. Imports utilitaires et routes
Tu vois passer :
./components/...pour tes vues HTMX/Tailwind../routes/...pour tes routeurs modulaires../token.jsetcookie-utils.jspour la gestion d’authentification.
Ces lignes n’augmentent pas la complexité du serveur principal : elles organisent seulement le code.
5. parseEnv();
Valide et charge tes variables.
Astuce : ici la fonction vient de ./env.js et peut utiliser Zod pour typage.
6. const app = new Hono();
Tu crées l’instance de l’application.
C’est le point d’entrée où tu pluggeras middlewares et routes.
7. serve({ fetch: app.fetch, port: 3000 }, callback);
1serve(2{ fetch: app.fetch, port: 3000 },3(info) => {4console.log(`Server is running on http://localhost:${info.port}`);5},6);
Explications rapides :
fetch: Hono s’appuie sur l’API Fetch standard, donc pas besoin dereq,res.port: choisis le 3000, classique pour dev.- Callback : simple console log pour confirmer le démarrage.
Note
Étape suivante
Pluge tes routes :
1app.route("/auth", auth);2app.route("/users", users);3app.route("/generate", imageGeneration);
Pourquoi ?
- Routeur dédié = code lisible.
- Séparation claire entre fonctionnalités.
Tip
app si tu veux écrire des tests e2e avec Supertest ou Vitest.Récap en 3 points
- Une seule fonction
servesuffit à monter le serveur. - Tout le reste (auth, tokens, images) reste dans des modules séparés, le cœur reste léger.
- Dix lignes suffisent, tu débogues plus vite, tu déploies plus vite.
Quiz
Testez vos connaissances avec 4 questions
Quel est le principal avantage d’utiliser la fonction "serve" importée depuis "@hono/node-server" dans le fichier server.ts ?
À quoi sert la ligne "import 'dotenv/config';" placée en tout début de fichier ?
Pourquoi appelle-t-on la fonction "parseEnv();" juste avant d’instancier l’application Hono ?
Quelles raisons expliquent l’utilisation de "app.route('/auth', auth);", "app.route('/users', users);" et "app.route('/generate', imageGeneration);" dans le serveur Hono ?
Sélectionnez toutes les réponses qui s'appliquent