Библиотека Ajv предоставляет не только API для JavaScript-кода, но и полноценный CLI-инструмент через пакет ajv-cli, предназначенный для валидации данных, компиляции схем и интеграции в сборочные процессы.
CLI строится вокруг работы с JSON Schema и позволяет выполнять операции без написания кода, используя набор аргументов командной строки.
CLI доступен через отдельный пакет:
npm install -g ajv-cli
После установки становится доступной команда:
ajv
Поддерживаются режимы:
validate)compile)Режим validate используется для проверки JSON-данных
относительно схемы.
ajv validate -s schema.json -d data.json
Параметры:
-s, --schema — путь к JSON Schema-d, --data — путь к проверяемым даннымПри успешной проверке процесс завершается с кодом 0, при
ошибке — ненулевым кодом.
Режим compile преобразует схемы в JavaScript-модуль,
содержащий валидатор.
ajv compile -s schema.json -o validator.js
Параметры:
-o, --output — файл результата-s, --schema — исходная схема--es5 — генерация ES5-кода--module — формат модуля (cjs, esm)Поддерживается передача нескольких схем:
ajv compile -s schema1.json -s schema2.json -o bundle.js
Также допускается использование директорий и шаблонов:
ajv compile -s "schemas/**/*.json" -o bundle.js
Флаг --strict активирует строгий режим проверки
спецификации JSON Schema.
Поведение включает:
Дополнительные параметры строгого режима:
--strict-schema--strict-types--strict-tuplesФлаг:
--all-errors
Отключает остановку на первой ошибке и собирает все найденные нарушения схемы.
Вывод ошибок структурируется в массив, содержащий:
Флаг:
--coerce-types
Включает автоматическое приведение типов при валидации:
Ajv поддерживает подключение дополнительных форматов:
--formats custom-formats.js
И пользовательских ключевых слов:
--keywords custom-keywords.js
Механизм расширений подключается в момент компиляции схемы и влияет на генерацию валидатора.
Поддерживаются различные форматы результатов:
text — человекочитаемый выводjson — структурированный выводstylish — формат с группировкой ошибокПример:
ajv validate -s schema.json -d data.json --errors=json
Допускается передача данных через stdin:
cat data.json | ajv validate -s schema.json
Или:
ajv validate -s schema.json -d -
CLI использует стандартную систему кодов завершения:
0 — успешная валидация1 — ошибки в данных2 — ошибки схемы или конфигурации3 — внутренняя ошибка исполненияРежим bundling используется для генерации единого файла валидаторов:
ajv compile -s schema.json --bundle -o bundle.js
В этом режиме:
CLI оптимизирован под:
Особенно заметный эффект достигается при использовании режима компиляции, где проверка переносится в заранее сгенерированный код.
ajv validate -s schema.json -d "data/**/*.json" --all-errors
ajv compile -s schema.json --keywords custom.js --formats formats.js -o validator.js
ajv compile -s schema.json --strict --coerce-types -o validator.js
При валидации ошибки формируются в виде массива объектов:
[
{
"instancePath": "/user/age",
"keyword": "type",
"message": "must be number",
"params": {
"type": "number"
}
}
]
Каждая ошибка соответствует конкретному нарушению схемы и может использоваться для дальнейшей обработки в пайплайне.
CLI поддерживает сценарии, где схемы разделяются по окружениям:
Используются разные наборы аргументов:
ajv validate -s schema.prod.json -d data.json --strict
ajv validate -s schema.dev.json -d data.json --all-errors
CLI разбирает параметры в следующем порядке:
Порядок влияет на финальную конфигурацию валидатора, особенно при использовании пользовательских ключевых слов и форматов.