# grunt-bootlint

> A Grunt wrapper for [Bootlint](https://www.npmjs.org/package/bootlint), the HTML linter for [Bootstrap](https://getbootstrap.com/) projects

[![NPM version](https://img.shields.io/npm/v/grunt-bootlint.svg)](https://www.npmjs.com/package/grunt-bootlint)
[![Build Status](https://github.com/twbs/grunt-bootlint/workflows/Tests/badge.svg)](https://github.com/twbs/grunt-bootlint/actions?workflow=Tests)
[![MIT License](https://img.shields.io/npm/l/grunt-bootlint.svg)](https://github.com/twbs/grunt-bootlint/blob/master/LICENSE)
[![Dependency Status](https://img.shields.io/david/twbs/grunt-bootlint.svg)](https://david-dm.org/twbs/grunt-bootlint)
[![devDependency Status](https://img.shields.io/david/dev/twbs/grunt-bootlint.svg)](https://david-dm.org/twbs/grunt-bootlint?type=dev)

## Getting Started

If you haven't used [Grunt](https://gruntjs.com/) before, be sure to check out the [Getting Started](https://gruntjs.com/getting-started) guide, as it explains how to create a [Gruntfile](https://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-bootlint --save-dev
```

Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

```js
grunt.loadNpmTasks('grunt-bootlint');
```

## The "bootlint" task

### Overview

In your project's Gruntfile, add a section named `bootlint` to the data object passed into `grunt.initConfig()`.

```js
grunt.initConfig({
  bootlint: {
    options: {
      stoponerror: false,
      relaxerror: []
    },
    files: ['path/to/file.html', 'path/to/*.html']
  }
});
```

### Options

### Usage Examples

#### Default Options

In this example, the default options are used to lint files for common problems in bootstrap.

```js
grunt.initConfig({
  bootlint: {
    options: {
      relaxerror: [],
      showallerrors: false,
      stoponerror: false,
      stoponwarning: false
    },
    files: ['test/fixtures/*.html']
  }
});
```

### Settings

#### options.stoponerror

* Type: `Boolean`
* Default: `false`

Breaks out of grunt task on first error problem ID. Use `--force` to force continue.

#### options.stoponwarning

* Type: `Boolean`
* Default: `false`

Breaks out of grunt task on first warning problem ID. Use `--force` to force continue.

#### options.showallerrors

* Type: `Boolean`
* Default: `false`

Shows all errors and warnings before stopping the task. (Overrides `stoponerror` and `stoponwarning`, above.)

#### options.relaxerror

* Type: `Array` | `Object`
* Default: `[]`

Array of [bootlint problem ID codes][] (`String`s) to explicitly ignore.

Object of [bootlint problem ID codes][] as **keys** and filepath globs as array **value**.

##### Example

```js
relaxerror: {
  'E001': [],
  'W005': [
    'path/to/file.html',
    'file/path/*.glob'
  ]
},
```

## Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [Grunt](https://gruntjs.com/).

## Release History

* 2016-04-05 - v0.10.1: Updates for Grunt 1.0.0 compatibility and adds pluralize for files/errors.
* 2015-11-24 - v0.10.0: Updates Bootlint to v0.14.1 and adds the ability to ignore lint problems on a per-file basis using `relaxerror`.
* 2015-06-01 - v0.9.1: Minor update to license metadata.
* 2015-03-16 - v0.9.0: Updates Bootlint to v0.12.0
* 2015-02-25 - v0.8.0: Updates Bootlint to v0.11.0
* 2015-01-23 - v0.7.0: Updates Bootlint to v0.10.0
* 2014-12-23 - v0.6.0: Updates Bootlint to v0.9.1
* 2014-11-12 - v0.5.3: Fixes issue with `stoponerror` option
* 2014-11-12 - ~~v0.5.2: Fixes issue with `stoponerror` option~~ *This was a bad release. Please upgrade.*
* 2014-11-10 - v0.5.1: Displays message when files pass
* 2014-11-10 - v0.5.0: Updates Bootlint, adds line/col numbers to output, quieter output.
* 2014-11-03 - v0.4.0: Updates Bootlint dependency.
* 2014-10-17 - v0.3.0: Basic support for Bootlint 0.5.0. **Changes `relaxerror` to use Bootlint problem IDs**
* 2014-09-25 - v0.2.1: Removes color dependency.
* 2014-09-25 - v0.2.0: First formal release.

## License and copyright

Code released under [the MIT license](https://github.com/twbs/grunt-bootlint/blob/master/LICENSE).

[bootlint problem ID codes]: https://github.com/twbs/bootlint/wiki
