gulp-tv4

Validate files against json-schema v4

Usage no npm install needed!

<script type="module">
  import gulpTv4 from 'https://cdn.skypack.dev/gulp-tv4';
</script>

README

gulp-tv4 Dependency Status

Use Gulp and Tiny Validator (tv4) to validate files against json-schema draft v4.

Usage

Install Gulp globally and locally (read an explanation of why we need to do both here):

$ npm install gulp -g
$ npm install gulp --save-dev

Install the plugin as follows:

$ npm install gulp-tv4 --save-dev

The plugin can then be enabled inside your Gulpfile:

var gulp = require( 'gulp' ),
    tv4 = require( 'gulp-tv4' ) ;

And can be used as follows:

gulp.task( 'validate', function() {
  gulp.src( 'config.json' )
    .pipe( tv4( 'schema.json' ) ) ;
} ) ;

Parameters

The plugin expects to be called with either the name of a file containing the schema against which all input files should be validated, or with an object containing the schema definition.

In other words, either of the following will work:

Pass the name of the schema file

gulp.task( 'validate', function() {
  gulp.src( 'config.json' )
    .pipe( tv4( 'schema.json' ) ) ;
} ) ;

Pass the schema definition as an object

var schema = {
  "title": "User Schema",
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "minLength": 10
    },
    "password": {
      "type": "string",
      "minLength": 8,
      "maxLength": 12
    }
  },
  "required": [
    "username", "password"
  ]
} ;
gulp.task( 'validate', function() {
  gulp.src( 'config.json' )
    .pipe( tv4( schema ) ) ;
} ) ;

Reporting

Validation results are added onto each file object under the tv4 key, and contain the following elements:

  • valid - Boolean
  • error - object containing error details (if any)
  • missing - array of missing schema(s) (if any)

So a more thorough example which checks the validation results might look like:

gulp.task( 'validate', function() {
  gulp.src( [ '*.json' ] )
    .pipe( tv4( 'schema.json' ) )
    .pipe( through.obj( function( file, enc, callback ) {
      callback( null, file ) ;
      if ( !file.tv4.valid ) {
        throw new Error( 'JSON validation error(s) found' ) ;
      }
    } ) ) ;
} ) ;

History

  • 0.1.0 - First release

Todo

  • Report validation errors in a clean and consistent manner.

License

MIT License