vite перестраивает dev-сервер при каждом http-запросе, что приводит к дублированию схемы graphql и мгновенному сбою сервера — сборка и производство работают, репо внутри
Я пытаюсь создать сервер graphql, используя nestjs и используя vite + swc в качестве компилятора/построителя по соображениям производительности, веб-пакет будет занимать 50-60+ секунд при каждой перестройке в большом проекте, SWC/vite, похоже, сокращает это на коэффициент не менее 5.
Основные инструменты по этому поводу:
"@nestjs/graphql": "10.0.9",
"@nestjs/apollo": "10.0.9",
"typescript": "4.7.4",
"vite-plugin-node": "1.0.0",
"vite": "2.9.13",
"@swc/core": "1.2.207",
"vite-tsconfig-paths": "3.5.0"
Теперь я поиграл с этими фиксированными версиями, пробуя различные комбинации старых версий. Но я сузил недостаток, чтобы быть проблемой конкретно с vite.
Если вы создаете приложение и обслуживаете его, все работает нормально, потому что производственная версия вызываетbootstrap()
функция, которая не обрабатывается сервером разработки vite.
Это также проблема, специфичная для NestJS, из-за того, что NestJs использует подход «сначала код».
Я пытаюсь как-то исправить эту проблему, пытаясь сделать три вещи:
- запретить серверу разработки перестраиваться при каждом запросе
- настроить сервер разработки на очистку после себя при каждом запросе
- настройте graphql в nestjs таким образом, чтобы схема строилась только 1 раз, что-то простое, например:
let built = false;
if(!built) { buildSchema(); built = true; }
я рассчитываю на этоbuilt
переменная не меняется между запросами, но если это произойдет, я мог бы найти способ связать ее с командой запуска через файл вне области видимости vite.
Спасибо.