Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Grunt plugin for z-schema, a JSON Schema validator.

branch: master

Merge pull request #3 from gaspaio/custom-validators-remote-refs

Add support for Custom format validators and remote reference caching
latest commit d884fbd0c8
Petr Bela authored
README.md

grunt-z-schema

Grunt plugin for z-schema, a JSON Schema validator.

Getting Started

This plugin requires Grunt.

If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

npm install grunt-z-schema --save-dev

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

grunt.loadNpmTasks('grunt-z-schema');

The "zschema" task

Overview

In your project's Gruntfile, add a section named zschema to the data object passed into grunt.initConfig().

grunt.initConfig({
  zschema: {
    options: {
      // Task-specific options go here.
    },
    your_target: {
      options: {
        // Target-specific file options go here.
      },
      files: {
        // Target-specific file lists go here.
        'schema.json': ['file1.json', 'file2.json']  // the schema will validate file1 and file2
      }
    },
  },
})

Advanced usage

You can also configure Custom Format Validators or Remote references caching as follows :

var validators = require('./lib/validators');
var schemas = require('./lib/schemas');

module.exports = function (grunt) {
  grunt.initConfig({
    zschema: {
      validateSchemas: {
        validators: {
          'xstring': validators.xstringValidator
        },
        remoteRefs: {
          'http://apis.mysite.com/myschema.json': schemas.myschema,
        },
        files: {
          'schemas/main.json': 'fixtures/**/*.json'
        }
      }
    }
  });

  require('load-grunt-tasks')(grunt);
  grunt.loadNpmTasks('grunt-z-schema');

  grunt.registerTask('default', 'zschema');
}

See the Z-Schema documentation.

Options

Options for strict validation. Any option defined here will be passed over to ZSchema instance.

Example:

zschema: {
  options: {
    noTypeless: true
  }
}

Usage Examples

In this example, post1.json and post2.json are two JSON files that will be validated against the post-schema.json schema. All JSON files in the comments will be validated against the comment schema. All validations will also report unknown keywords.

grunt.initConfig({
  zschema: {
    options: {
      noExtraKeywords: true
    },
    build: {
      files: {
        'post-schema.json': ['posts/post1.json', 'posts/post2.json'],
        'comment-schema.json': ['comments/*.json']
      }
    }
  }
})

If you don't have any actual JSON files but still need to validate the schema itself for syntactic and other errors:

grunt.initConfig({
  zschema: {
    build: {
      files: {
        'schema.json': []
      }
    }
  }
})

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Tests

npm test

The test will print out validation errors for the tasks designed to fail. That is expected behaviour. Unfortunately, Grunt does not really provide a good way to test that a task failed. If you come across a better solution please let me know.

Release History

See CHANGELOG.md

License

Copyright (c) 2014 Petr Bela. Licensed under the MIT license.

Something went wrong with that request. Please try again.