Skip to content

About

Fastify + TypeScript REST API starter for the JS: REST API course

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

fastify-api-application

Стартовый шаблон REST API на Fastify и TypeScript для курса JS: REST API (Fastify).

Внутри лежит ровно то, что получается к концу урока «Подготовка проекта», то есть скелет от генератора fastify generate, настройки TypeScript и три команды запуска. Базы данных, контракта на TypeSpec и раннера тестов здесь нет: их добавляют уроки курса, и код к ним пишете вы.

Как начать

Нужен mise: он ставит Node.js нужной версии из mise.toml.

Нажмите Use this template и склонируйте получившийся репозиторий к себе. Дальше идите по курсу, начиная с урока про базу данных, и коммитьте работу в этот же репозиторий.

make install
make dev

Сервер поднимается на порту 3000 и перезапускается сам после правки файлов.

curl localhost:3000
# {"root":true}

Команды

make install      # поставить зависимости и git-хуки (hk)
make dev          # запуск с перезапуском и читаемыми логами
make start        # запуск без перезапуска
make check-types  # tsc, без вывода когда ошибок нет
make format       # oxfmt, тот же стиль кода, что в уроках курса
make format-check # проверить формат без правки

Что внутри

  • src/routes/ — обработчики маршрутов, Fastify подключает их сам
  • src/plugins/ — плагины и мидлвары
  • src/app.ts — точка входа
  • test/ — три примера от генератора на модуле node:test. Урок про тестирование ставит Vitest и просит эти три файла удалить, потому что Vitest их не запускает
  • tsconfig.json — Node исполняет .ts сам, снимая типы, поэтому сборки в проекте нет и компилятор только проверяет типы

Версия fastify-cli закреплена намеренно

В dependencies стоит ровно fastify-cli 8.0.0, без диапазона. В 8.0.1 два места зовут require() от пакетов, которые перешли на ESM (chalk 6 и pkg-up 5), и берут у них свойство, которого в пространстве имён модуля нет. Отсюда два отказа.

$ npx fastify generate . --integrate --esm --lang=ts
TypeError: colors[level] is not a function   # log.js, обрывает генерацию до правки package.json

$ npm run dev
TypeError: pkgUp is not a function           # util.js, приложение не поднимается вовсе

Апстримная issue лежит по адресу fastify/fastify-cli#915. Исправленной версии на npm пока нет. Поднимать пин можно после того, как оба отказа проверены запуском, и вместе с ним поднимается пин в уроке подготовки проекта курса «JS: REST API (Fastify)».

Готовое API целиком, собранное по мотивам курса, лежит в js-fastify-rest-api-example. Оно нужно для сверки, заданий там нет.


Hexlet Ltd. logo

This repository is created and maintained by the team and the community of Hexlet, an educational project. Read more about Hexlet.

About

Fastify + TypeScript REST API starter for the JS: REST API course

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages