Linting YAML files for correctness using JS-YAML.
npm install grunt-yamllint~0.4.0
shell
npm install grunt-yamllint --save-dev
`
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
`js
grunt.loadNpmTasks('grunt-yamllint');
`
yaml-lint task
_Run this task with the grunt yamllint command._
Task targets, files and options may be specified according to the grunt Configuring tasks guide.
$3
Any specified option will be passed through directly to [JS-YAML][], thus you can specify any option that JS-YAML supports. See the [JS-YAML documentation][] for a list of supported options.
[JS-YAML]: https://github.com/nodeca/js-yaml/
[JS-YAML documentation]: https://github.com/nodeca/js-yaml/
A few additional options are supported:
#### force
Type: Boolean
Default: false
Set force to true to report JS-YAML errors but not fail the task.
$3
#### Wildcards
In this example, running grunt yamllint:all (or grunt yamllint because yamllint is a multi task) will lint the project's YAML files in the lib and test directories and their subdirectores, using the default JS-YAML options.
`js
// Project configuration.
grunt.initConfig({
yamllint: {
all: ['lib//.yaml', 'test//.yaml']
}
});
`
#### Linting before and after concatenating
In this example, running grunt yaml-lint will lint both the "beforeconcat" set and "afterconcat" sets of files. This is not ideal, because dist/output.yaml may get linted before it gets created via the grunt-contrib-concat plugin concat task.
In this case, you should lint the "beforeconcat" files first, then concat, then lint the "afterconcat" files, by running grunt yamllint:beforeconcat concat yamllint:afterconcat.
`js
// Project configuration.
grunt.initConfig({
concat: {
dist: {
src: ['src/foo.yaml', 'src/bar.yaml'],
dest: 'dist/output.yaml'
}
},
yamllint: {
beforeconcat: ['src/foo.yaml', 'src/bar.yaml'],
afterconcat: ['dist/output.yaml']
}
});
`
#### Specifying JS-YAML options and globals
In this example, custom JS-YAML options are specified. Note that when grunt yamllint:uses_defaults is run, those files are linted using the default options, but when grunt yamllint:with_overrides is run, those files are linted using _merged_ task/target options.
`js
// Project configuration.
grunt.initConfig({
yamllint: {
options: {
schema: 'DEFAULT_SAFE_SCHEMA'
},
uses_defaults: ['dir1//.yaml', 'dir2//.yaml'],
with_overrides: {
options: {
schema: 'DEFAULT_FULL_SCHEMA'
},
files: {
src: ['dir3//.yaml', 'dir4//.yaml']
},
}
},
});
`
#### Snippet of options from JS-YAML
[Options][]:
- filename _(default: null)_ - string to be used as a file path in
error/warning messages.
- onWarning _(default: null)_ - function to call on warning messages.
Loader will throw on warnings if this function is not provided.
- schema _(default: DEFAULT_SAFE_SCHEMA)_ - specifies a schema to use.
- FAILSAFE_SCHEMA - only strings, arrays and plain objects:
http://www.yaml.org/spec/1.2/spec.html#id2802346
- JSON_SCHEMA - all JSON-supported types:
http://www.yaml.org/spec/1.2/spec.html#id2803231
- CORE_SCHEMA - same as JSON_SCHEMA:
http://www.yaml.org/spec/1.2/spec.html#id2804923
- DEFAULT_SAFE_SCHEMA - all supported YAML types, without unsafe ones
(!!js/undefined, !!js/regexp and !!js/function):
http://yaml.org/type/
- DEFAULT_FULL_SCHEMA` - all supported YAML types.