UNPKG

8.85 kBMarkdownView Raw
1# grunt-contrib-jshint v0.7.2 [![Build Status](https://travis-ci.org/gruntjs/grunt-contrib-jshint.png?branch=master)](https://travis-ci.org/gruntjs/grunt-contrib-jshint)
2
3> Validate files with JSHint.
4
5
6
7## Getting Started
8This plugin requires Grunt `~0.4.0`
9
10If 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:
11
12```shell
13npm install grunt-contrib-jshint --save-dev
14```
15
16Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
17
18```js
19grunt.loadNpmTasks('grunt-contrib-jshint');
20```
21
22
23
24
25## Jshint task
26_Run this task with the `grunt jshint` command._
27
28Task targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide.
29
30For more explanations of the lint errors JSHint will throw at you please visit [jslinterrors.com](http://jslinterrors.com/).
31
32### Options
33
34Any specified option will be passed through directly to [JSHint][], thus you can specify any option that JSHint supports. See the [JSHint documentation][] for a list of supported options.
35
36[JSHint]: http://www.jshint.com/
37[JSHint documentation]: http://www.jshint.com/docs/
38
39A few additional options are supported:
40
41#### globals
42Type: `Object`
43Default value: `null`
44
45A map of global variables, with keys as names and a boolean value to determine if they are assignable. This is not a standard JSHint option, but is passed into the `JSHINT` function as its third argument. See the [JSHint documentation][] for more information.
46
47#### jshintrc
48Type: `String` or `true`
49Default value: `null`
50
51If set to `true`, no config will be sent to jshint and jshint will search for `.jshintrc` files relative to the flies being linted.
52
53If a filename is specified, options and globals defined therein will be used. The `jshintrc` file must be valid JSON and looks something like this:
54
55```json
56{
57 "curly": true,
58 "eqnull": true,
59 "eqeqeq": true,
60 "undef": true,
61 "globals": {
62 "jQuery": true
63 }
64}
65```
66
67*Be aware that `jshintrc` settings are not merged with your Grunt options.*
68
69#### extensions
70Type: `String`
71Default value: `''`
72
73A list of non-dot-js extensions to check.
74
75#### ignores
76Type: `Array`
77Default value: `null`
78
79A list of files and dirs to ignore. This will override your `.jshintignore` file if set and does not merge.
80
81#### force
82Type: `Boolean`
83Default value: `false`
84
85Set `force` to `true` to report JSHint errors but not fail the task.
86
87#### reporter
88Type: `String`
89Default value: `null`
90
91Allows you to modify this plugins output. By default it will use a built-in Grunt reporter. Set the path to your own custom reporter or to one of the built-in JSHint reporters: `jslint` or `checkstyle`.
92
93See also: [Writing your own JSHint reporter.](http://jshint.com/docs/reporters/)
94
95#### reporterOutput
96Type: `String`
97Default value: `null`
98
99Specify a filepath to output the results of a reporter. If `reporterOutput` is specified then all output will be written to the given filepath instead of printed to stdout.
100
101### Usage examples
102
103#### Wildcards
104In this example, running `grunt jshint:all` (or `grunt jshint` because `jshint` is a [multi task](http://gruntjs.com/configuring-tasks#task-configuration-and-targets)) will lint the project's Gruntfile as well as all JavaScript files in the `lib` and `test` directories and their subdirectores, using the default JSHint options.
105
106```js
107// Project configuration.
108grunt.initConfig({
109 jshint: {
110 all: ['Gruntfile.js', 'lib/**/*.js', 'test/**/*.js']
111 }
112});
113```
114
115#### Linting before and after concatenating
116In this example, running `grunt jshint` will lint both the "beforeconcat" set and "afterconcat" sets of files. This is not ideal, because `dist/output.js` may get linted before it gets created via the [grunt-contrib-concat plugin](https://github.com/gruntjs/grunt-contrib-concat) `concat` task.
117
118In this case, you should lint the "beforeconcat" files first, then concat, then lint the "afterconcat" files, by running `grunt jshint:beforeconcat concat jshint:afterconcat`.
119
120```js
121// Project configuration.
122grunt.initConfig({
123 concat: {
124 dist: {
125 src: ['src/foo.js', 'src/bar.js'],
126 dest: 'dist/output.js'
127 }
128 },
129 jshint: {
130 beforeconcat: ['src/foo.js', 'src/bar.js'],
131 afterconcat: ['dist/output.js']
132 }
133});
134```
135
136#### Specifying JSHint options and globals
137
138In this example, custom JSHint options are specified. Note that when `grunt jshint:uses_defaults` is run, those files are linted using the default options, but when `grunt jshint:with_overrides` is run, those files are linted using _merged_ task/target options.
139
140```js
141// Project configuration.
142grunt.initConfig({
143 jshint: {
144 options: {
145 curly: true,
146 eqeqeq: true,
147 eqnull: true,
148 browser: true,
149 globals: {
150 jQuery: true
151 },
152 },
153 uses_defaults: ['dir1/**/*.js', 'dir2/**/*.js'],
154 with_overrides: {
155 options: {
156 curly: false,
157 undef: true,
158 },
159 files: {
160 src: ['dir3/**/*.js', 'dir4/**/*.js']
161 },
162 }
163 },
164});
165```
166
167#### Ignoring specific warnings
168
169If you would like to ignore a specific warning:
170
171```shell
172[L24:C9] W015: Expected '}' to have an indentation at 11 instead at 9.
173```
174
175You can toggle it by prepending `-` to the warning id as an option:
176
177```js
178grunt.initConfig({
179 jshint: {
180 ignore_warning: {
181 options: {
182 '-W015': true,
183 },
184 src: ['**/*.js'],
185 },
186 },
187});
188```
189
190#### Ignoring specific files
191
192Occasionally application files and third party libraries share the same directory. To exclude third party code, but include all current and future application files, use a glob for `files` and specifically exclude libraries using `ignores`. In this example, the jQuery file is matched by the glob but subsequently ignored when JSHint does its analysis.
193
194```js
195grunt.initConfig({
196 jshint: {
197 files: ['js/*.js'],
198 options: {
199 ignores: ['js/jquery.js']
200 }
201 }
202});
203```
204
205
206## Release History
207
208 * 2013-11-16   v0.7.2   Only print file name once per error.
209 * 2013-10-31   v0.7.1   Ability to set jshintrc option to true to use jshint's native ability for finding .jshintrc files relative to the linted files.
210 * 2013-10-23   v0.7.0   Update to jshint 2.3.0.
211 * 2013-10-23   v0.6.5   Fix output when maxerr is low.
212 * 2013-08-29   v0.6.4   jshintrc now loaded by jshint allowing comments.
213 * 2013-08-15   v0.6.3   Fix module location for jshint 2.1.10.
214 * 2013-07-29   v0.6.2   Update to jshint 2.1.7.
215 * 2013-07-27   v0.6.1   Peg jshint to 2.1.4 until breaking changes in 2.1.5 are fixed.
216 * 2013-06-02   v0.6.0   Dont always succeed the task when using a custom reporter. Bump jshint to 2.1.3.
217 * 2013-05-22   v0.5.4   Fix default reporter to show offending file.
218 * 2013-05-19   v0.5.3   Performance: Execute the reporter once rather than per file.
219 * 2013-05-18   v0.5.2   Fix printing too many erroneous ignored file errors.
220 * 2013-05-17   v0.5.1   Fix for when only 1 file is lint free.
221 * 2013-05-17   v0.5.0   Bump to jshint 2.0. Add support for .jshintignore files and ignores option Add support for extensions option. Add support for custom reporters and output report to a file.
222 * 2013-04-08   v0.4.3   Fix evaluation of predef option when it's an object.
223 * 2013-04-08   v0.4.2   Avoid wiping force option when jshintrc is used.
224 * 2013-04-06   v0.4.1   Fix to allow object type for deprecated predef.
225 * 2013-04-04   v0.4.0   Revert task level options to override jshintrc files.
226 * 2013-03-13   v0.3.0   Bump to JSHint 1.1.0. Add force option to report JSHint errors but not fail the task. Add error/warning code to message. Allow task level options to override jshintrc file.
227 * 2013-02-26   v0.2.0   Bump to JSHint 1.0
228 * 2013-02-15   v0.1.1   First official release for Grunt 0.4.0.
229 * 2013-01-18   v0.1.1rc6   Updating grunt/gruntplugin dependencies to rc6. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions.
230 * 2013-01-09   v0.1.1rc5   Updating to work with grunt v0.4.0rc5. Switching to this.filesSrc api.
231 * 2012-10-18   v0.1.0   Work in progress, not yet officially released.
232
233---
234
235Task submitted by ["Cowboy" Ben Alman](http://benalman.com/)
236
237*This file was generated on Sat Nov 16 2013 09:34:14.*