Создание проекта
Проект Hono создаётся официальной командой npm create hono. Она спрашивает, под какую платформу нужен проект, и раскладывает готовые файлы: точку входа, настройки TypeScript и скрипты запуска.
Что понадобится
Нужен Node.js 22 или новее. Проверьте версию в терминале:
node -vСоздание проекта
npm create hono@latest blog-apiКоманда задаст несколько вопросов:
- Which template do you want to use? — выберите
nodejs. - Do you want to install project dependencies? — ответьте да.
- 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. Если ошиблись, проще создать проект заново.