# grunt-yamllint v0.1.0

> Validate YAML files with JS-YAML.



## Getting Started
This plugin requires Grunt `~0.4.0`

If you haven't used [Grunt](http://gruntjs.com/) before, be sure to check out the [Getting Started](http://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](http://gruntjs.com/sample-gruntfile) as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:

```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](http://gruntjs.com/configuring-tasks) guide.

### Options

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.

### Usage examples

#### Wildcards
In this example, running `grunt yamllint:all` (or `grunt yamllint` because `yamllint` is a [multi task](http://gruntjs.com/configuring-tasks#task-configuration-and-targets)) 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](https://github.com/gruntjs/grunt-contrib-concat) `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.

[Options]: https://github.com/nodeca/js-yaml/blob/master/README.md#safeload-string---options-

## Release History
 * 2014-10-20  v0.1.0   Work in progress, not yet officially released.
