Что это такое?
joi — это язык описания схем и валидатор данных для JavaScript: вы описываете, как выглядят корректные данные, а joi проверяет объекты на соответствие этому описанию. Библиотека вышла из экосистемы hapi, но работает в любом JavaScript-проекте.
Это фреймворк, который я запускаю, или библиотека, которую я вызываю из своего кода?
Библиотека — вы устанавливаете её через npm и вызываете из своего кода для проверки данных. Никакой сервер или процесс запускать не нужно.
Как добавить её в проект?
Достаточно выполнить npm install joi. Для уроков, полной документации по API и поддержки проект отсылает к joi.dev Developer Portal.
Мне нужна свежая версия Node, чтобы пользоваться ею?
Да — пакет объявляет Node.js 20 как минимум, поэтому более старые версии Node не подойдут. Больше ничего не требуется: ни Python, ни компиляторов, ни Docker.
joi привязан к фреймворку hapi или его можно использовать где угодно?
Где угодно — это независимый npm-пакет, и в нём нет ничего, требующего сервера hapi. Связь с hapi — только история происхождения: внутренности построены на небольших утилитарных модулях @hapi, таких как @hapi/hoek.
joi работает в браузере или только в Node?
И там, и там. Он работает на Node.js, а в репозитории поддерживается отдельная браузерная сборка, которая компилируется перед каждым публикацией, — та же логика валидации может выполняться и на стороне клиента.
Что мне даёт поддержка Standard Schema?
joi подключает @standard-schema/spec как зависимость — это интерфейс Standard Schema, общий способ для JS-библиотек предоставлять валидаторы. Это значит, что joi хорошо работает с инструментами, которые принимают валидаторы Standard Schema, без специальных адаптеров.
Он потянет за собой много зависимостей в мой проект?
Нет — в рантайме это шесть небольших хелперов @hapi (@hapi/hoek, @hapi/topo, @hapi/formula, @hapi/address, @hapi/pinpoint, @hapi/tlds) плюс спецификация Standard Schema. Никакого Docker, Python или нативной компиляции.
joi всё ещё поддерживается или это устаревший проект?
Похоже, проект жив и хорошо охраняется: репозиторий не архивирован, CI-процессы запускаются при изменениях, а тесты выполняются с жёстким порогом покрытия в 100% через @hapi/lab. Проект существует с 2012 года.
What are similar projects?
validator.js, mongoose, core-js, redux-form, lollipop-css, react-jsonschema-form, zod, date-fns
Which topics is it in?
form-validation, data-validation, js, schema, validation, npm-package, node, javascript-library, browser, utility, backend, web-development