Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Создание проекта

Проект Hono создаётся официальной командой npm create hono. Она спрашивает, под какую платформу нужен проект, и раскладывает готовые файлы: точку входа, настройки TypeScript и скрипты запуска.

Что понадобится

Нужен Node.js 22 или новее. Проверьте версию в терминале:

node -v

Создание проекта

npm create hono@latest blog-api

Команда задаст несколько вопросов:

  1. Which template do you want to use? — выберите nodejs.
  2. Do you want to install project dependencies? — ответьте да.
  3. Which package manager do you want to use? — выберите npm.

Затем перейдите в папку проекта и запустите сервер разработки:

cd blog-api
npm run dev

В терминале появится строка Server is running on http://localhost:3000. Откройте этот адрес — в браузере будет текст «Hello Hono!».

Структура проекта

blog-api/
├── src/
│   └── index.ts        точка входа: приложение и запуск сервера
├── node_modules/       установленные пакеты
├── package.json        зависимости и скрипты
├── tsconfig.json       настройки TypeScript
└── .gitignore

Проект намеренно маленький: Hono не навязывает структуру папок. Маршруты, middleware и работу с базой вы разложите по файлам сами, по мере роста приложения.

Скрипты

В package.json уже есть три скрипта:

КомандаЧто делает
npm run devзапускает src/index.ts через tsx и перезапускает сервер при сохранении файла
npm run buildкомпилирует TypeScript в JavaScript в папку dist/
npm startзапускает готовый dist/index.js обычным Node.js

tsx — небольшая программа, которая запускает файлы TypeScript без отдельной компиляции. Она нужна только при разработке.

Зависимости

{
  "dependencies": {
    "@hono/node-server": "^1.14.0",
    "hono": "^4.7.0"
  }
}

hono — сам фреймворк, @hono/node-server — адаптер, который запускает приложение на Node.js. Номера версий у вас могут отличаться, это нормально.

Настройки TypeScript

В tsconfig.json включён строгий режим (strict) и указаны настройки JSX — они понадобятся в уроке о HTML-страницах. Модули там настроены как NodeNext, поэтому при импорте своих файлов пишется расширение .js, даже если файл называется .ts:

// src/index.ts
import { posts } from './routes/posts.js'

Частая ошибка

Шаблон выбирают под ту платформу, где будет работать сервер. Если выбрать cloudflare-workers или bun, файлы и команды запуска будут другими, и примеры курса с @hono/node-server не запустятся. Для курса выбирайте nodejs. Если ошиблись, проще создать проект заново.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.