Generic configuration validation tool that helps you with warnings, errors and deprecation messages as well as showing users examples of correct configuration.
bash
npm install --save jest-validate
```js import {validate} from 'jest-validate';
validate((config: Object), (options: ValidationOptions)); // => {hasDeprecationWarnings: boolean, isValid: boolean} ```
Where ValidationOptions
are:
```js
type ValidationOptions = {
blacklist?: Array
type Title = {| deprecation?: string, error?: string, warning?: string, |}; ```
exampleConfig
is the only option required.
By default jest-validate
will print generic warning and error messages. You can however customize this behavior by providing options: ValidationOptions
object as a second argument:
Almost anything can be overwritten to suite your needs.
recursiveBlacklist
– optional array of string keyPaths that should be excluded from deep (recursive) validation.comment
– optional string to be rendered below error/warning message.condition
– an optional function with validation condition.deprecate
, error
, unknown
– optional functions responsible for displaying warning and error messages.deprecatedConfig
– optional object with deprecated config keys.exampleConfig
– the only required option with configuration against which you'd like to test.recursive
- optional boolean determining whether recursively compare exampleConfig
to config
(default: true
).title
– optional object of titles for errors and messages.You will find examples of condition
, deprecate
, error
, unknown
, and deprecatedConfig
inside source of this repository, named respectively.
Minimal example:
js
validate(config, {exampleConfig});
Example with slight modifications:
js
validate(config, {
comment: ' Documentation: http://custom-docs.com',
deprecatedConfig,
exampleConfig,
title: {
deprecation: 'Custom Deprecation',
// leaving 'error' and 'warning' as default
},
});
This will output:
```bash ● Validation Warning:
Unknown option transformx with value "
Documentation: http://custom-docs.com ```
```bash ● Validation Error:
Option transform must be of type: object but instead received: string
Example:
{
"transform": {
"^.+\.js$": "
Documentation: http://custom-docs.com ```
Based on deprecatedConfig
object with proper deprecation messages. Note custom title:
```bash Custom Deprecation:
Option scriptPreprocessor was replaced by transform, which support multiple preprocessors.
Jest now treats your current configuration as: { "transform": {".*": "xxx"} }
Please update your configuration.
Documentation: http://custom-docs.com ```