lhl 2bdf874dbb create 11 місяців тому
..
src 2bdf874dbb create 11 місяців тому
CHANGELOG.md 2bdf874dbb create 11 місяців тому
LICENSE 2bdf874dbb create 11 місяців тому
README.md 2bdf874dbb create 11 місяців тому
package.json 2bdf874dbb create 11 місяців тому

README.md

npm node deps test coverage chat

Schema Utils

Install

npm i schema-utils

Usage

validateOptions

schema.json

{
  "type": "object",
  "properties": {
    // Options...
  },
  "additionalProperties": false
}

Error Messages (Custom)

schema.json

{
  "type": "object",
  "properties": {
    "option": {
      "type": [ "boolean" ]
    }
  },
  // Overrides the default err.message for option
  "errorMessage": {
    "option": "should be {Boolean} (https:/github.com/org/repo#anchor)"
  }
  "additionalProperties": false
}
import schema from 'path/to/schema.json'
import validateOptions from 'schema-utils'

validateOptions(schema, options, 'Loader/Plugin Name')

Examples

schema.json

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "test": {
      "anyOf": [
        { "type": "array" },
        { "type": "string" },
        { "instanceof": "RegExp" }
      ]
    },
    "transform": {
      "instanceof": "Function"
    },
    "sourceMap": {
      "type": "boolean"
    }
  },
  "additionalProperties": false
}

Loader

import { getOptions } from 'loader-utils'
import validateOptions from 'schema-utils'

import schema from 'path/to/schema.json'

function loader (src, map) {
  const options = getOptions(this) || {}

  validateOptions(schema, options, 'Loader Name')

  // Code...
}

Plugin

import validateOptions from 'schema-utils'

import schema from 'path/to/schema.json'

class Plugin {
  constructor (options) {
    validateOptions(schema, options, 'Plugin Name')

    this.options = options
  }

  apply (compiler) {
    // Code...
  }
}