ajv vs joi vs typanion vs yup vs zod
バリデーションライブラリ
ajvjoitypanionyupzod類似パッケージ:

バリデーションライブラリ

バリデーションライブラリは、データの整合性を確保するために使用されるツールであり、特にユーザー入力やAPIレスポンスの検証に役立ちます。これらのライブラリは、データが期待される形式や条件を満たしているかどうかを確認し、エラーメッセージを提供することで、開発者がデータの正確性を保つのを助けます。

npmのダウンロードトレンド

3 年

GitHub Starsランキング

統計詳細

パッケージ
ダウンロード数
Stars
サイズ
Issues
公開日時
ライセンス
ajv241,137,36014,6281.03 MB31715日前MIT
joi021,201557 kB1903ヶ月前BSD-3-Clause
typanion0275133 kB193年前MIT
yup023,690270 kB2405ヶ月前MIT
zod042,0014.34 MB2541ヶ月前MIT

機能比較: ajv vs joi vs typanion vs yup vs zod

パフォーマンス

  • ajv:

    AJVは、非常に高速なJSONスキーマバリデーションを提供します。特に大規模なデータセットを扱う際に、そのパフォーマンスの高さが際立ちます。

  • joi:

    Joiは、パフォーマンスも良好ですが、AJVほどのスピードはありません。特にシンプルなバリデーションには十分な性能を発揮します。

  • typanion:

    Typanionは、TypeScriptの型システムを利用するため、型のチェックが事前に行われるため、パフォーマンスに優れています。

  • yup:

    Yupは、スキーマベースのバリデーションを行うため、パフォーマンスは良好ですが、AJVほどの速度はありません。

  • zod:

    Zodは、軽量でありながら高いパフォーマンスを提供し、特にTypeScriptとの統合がスムーズです。

APIの使いやすさ

  • ajv:

    AJVは、JSONスキーマに基づくバリデーションを行うため、スキーマの定義が必要ですが、使い方は直感的です。

  • joi:

    Joiは、非常に直感的なAPIを持ち、バリデーションルールを簡単に定義できます。

  • typanion:

    Typanionは、TypeScriptの型を利用したバリデーションを提供し、型安全性を重視したAPI設計が魅力です。

  • yup:

    Yupは、スキーマを定義する際の構文がシンプルで、特にReactとの統合が容易です。

  • zod:

    Zodは、非常にシンプルで直感的なAPIを持ち、TypeScriptとの互換性が高いため、使いやすさが際立っています。

型安全性

  • ajv:

    AJVは、JSONスキーマを使用するため、型安全性はある程度確保されますが、TypeScriptとの統合は手動で行う必要があります。

  • joi:

    Joiは、型安全性を提供しますが、TypeScriptとの統合には追加の設定が必要です。

  • typanion:

    Typanionは、TypeScriptの型システムと密接に統合されており、型安全性が非常に高いです。

  • yup:

    Yupは、TypeScriptとの統合が可能ですが、型安全性はTypanionほど強くありません。

  • zod:

    Zodは、TypeScriptに特化した設計で、型安全性が非常に高く、型の整合性を簡単に保つことができます。

非同期バリデーション

  • ajv:

    AJVは、非同期バリデーションをサポートしていませんが、スキーマのバリデーションは非常に高速です。

  • joi:

    Joiは、非同期バリデーションをサポートしており、Promiseを返すことができます。

  • typanion:

    Typanionは、非同期バリデーションをサポートしていませんが、型安全性が高いです。

  • yup:

    Yupは、非同期バリデーションをサポートしており、特にAPIレスポンスの検証に便利です。

  • zod:

    Zodは、非同期バリデーションをサポートしており、Promiseを返すことができます。

エラーメッセージのカスタマイズ

  • ajv:

    AJVでは、エラーメッセージのカスタマイズが可能ですが、設定がやや複雑です。

  • joi:

    Joiは、エラーメッセージのカスタマイズが非常に簡単で、直感的に行えます。

  • typanion:

    Typanionでは、エラーメッセージのカスタマイズが可能ですが、他のライブラリほどの柔軟性はありません。

  • yup:

    Yupは、エラーメッセージのカスタマイズが容易で、特にスキーマ定義時に直感的に行えます。

  • zod:

    Zodは、エラーメッセージのカスタマイズが簡単で、TypeScriptの型と連携して柔軟に設定できます。

選び方: ajv vs joi vs typanion vs yup vs zod

  • ajv:

    AJVは、JSONスキーマに基づくバリデーションを必要とする場合に最適です。特にパフォーマンスが重要なプロジェクトや、複雑なスキーマを扱う場合に選ぶべきです。

  • joi:

    Joiは、直感的なAPIと柔軟なバリデーションルールを提供するため、シンプルなバリデーションが必要な場合に適しています。特に、Node.js環境での使用に向いています。

  • typanion:

    Typanionは、TypeScriptの型システムと統合されており、型安全性を重視するプロジェクトに最適です。型に基づいたバリデーションが必要な場合に選択してください。

  • yup:

    Yupは、スキーマベースのバリデーションを提供し、特にReactと組み合わせて使う場合に便利です。非同期バリデーションが必要な場合にも適しています。

  • zod:

    Zodは、TypeScriptとの親和性が高く、シンプルで直感的なAPIを持つため、型安全でありながら簡単に使いたい場合に選ぶべきです。

ajv のREADME

Ajv logo

 

Ajv JSON schema validator

The fastest JSON validator for Node.js and browser.

Supports JSON Schema draft-04/06/07/2019-09/2020-12 (draft-04 support requires ajv-draft-04 package) and JSON Type Definition RFC8927.

build npm npm downloads Coverage Status SimpleX Gitter GitHub Sponsors

Ajv sponsors

Mozilla

Microsoft

RetoolTideliftSimpleX

Contributing

More than 100 people contributed to Ajv, and we would love to have you join the development. We welcome implementing new features that will benefit many users and ideas to improve our documentation.

Please review Contributing guidelines and Code components.

Documentation

All documentation is available on the Ajv website.

Some useful site links:

Please sponsor Ajv development

Since I asked to support Ajv development 40 people and 6 organizations contributed via GitHub and OpenCollective - this support helped receiving the MOSS grant!

Your continuing support is very important - the funds will be used to develop and maintain Ajv once the next major version is released.

Please sponsor Ajv via:

Thank you.

Open Collective sponsors

Performance

Ajv generates code to turn JSON Schemas into super-fast validation functions that are efficient for v8 optimization.

Currently Ajv is the fastest and the most standard compliant validator according to these benchmarks:

Performance of different validators by json-schema-benchmark:

performance

Features

Install

To install version 8:

npm install ajv

Getting started

Try it in the Node.js REPL: https://runkit.com/npm/ajv

In JavaScript:

// or ESM/TypeScript import
import Ajv from "ajv"
// Node.js require:
const Ajv = require("ajv")

const ajv = new Ajv() // options can be passed, e.g. {allErrors: true}

const schema = {
  type: "object",
  properties: {
    foo: {type: "integer"},
    bar: {type: "string"},
  },
  required: ["foo"],
  additionalProperties: false,
}

const data = {
  foo: 1,
  bar: "abc",
}

const validate = ajv.compile(schema)
const valid = validate(data)
if (!valid) console.log(validate.errors)

Learn how to use Ajv and see more examples in the Guide: getting started

Changes history

See https://github.com/ajv-validator/ajv/releases

Please note: Changes in version 8.0.0

Version 7.0.0

Version 6.0.0.

Code of conduct

Please review and follow the Code of conduct.

Please report any unacceptable behaviour to ajv.validator@gmail.com - it will be reviewed by the project team.

Security contact

To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure. Please do NOT report security vulnerabilities via GitHub issues.

Open-source software support

Ajv is a part of Tidelift subscription - it provides a centralised support to open-source software users, in addition to the support provided by software maintainers.

License

MIT