Стартовый шаблон 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сам, снимая типы, поэтому сборки в проекте нет и компилятор только проверяет типы
В 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. Оно нужно для сверки, заданий там нет.
This repository is created and maintained by the team and the community of Hexlet, an educational project. Read more about Hexlet.
