複数あるJSON SchemaをAjvでスタンドアロン化されたValidatorとして生成する
複数あるJSON SchemaをAjvを用いてスタンドアロン化済みのValidatorとして生成する方法です。
以前CLI経由で生成する方法を書きましたが今回はスクリプトで複数生成に対応してみます。
まずはAjvをインストールします。
node -vv16.5.0
npm -v7.19.1
npm install ajv
Ajvを用いてJSON Schemaを生成を生成するスクリプト例です。
const fs = require('fs')const path = require('path')const Ajv = require('ajv')const standaloneCode = require('ajv/dist/standalone').default
const rootDir = 'src'const distDir = 'dist'
const schemas = [ { name: 'foo', path: path.join(__dirname, `${rootDir}/schema-foo.json`), }, { name: 'bar', path: path.join(__dirname, `${rootDir}/schema-bar.json`), },]
schemas.forEach((item) => { const file = JSON.parse(fs.readFileSync(item.path, 'utf8'))
const ajv = new Ajv({ code: { source: true } }) const validate = ajv.compile(file) const moduleCode = standaloneCode(ajv, validate)
fs.writeFileSync( path.join(__dirname, `${distDir}/${item.name}Validator.js`), moduleCode );})
以下で実行すると、dist/
配下にbarValidator.js
とfooValidator.js
が生成されます。
node genValidator.js