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
|
8 | This plugin requires Grunt `~0.4.0`
|
9 |
|
10 | 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:
|
11 |
|
12 | ```shell
|
13 | npm install grunt-contrib-jshint --save-dev
|
14 | ```
|
15 |
|
16 | Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
|
17 |
|
18 | ```js
|
19 | grunt.loadNpmTasks('grunt-contrib-jshint');
|
20 | ```
|
21 |
|
22 |
|
23 |
|
24 |
|
25 | ## Jshint task
|
26 | _Run this task with the `grunt jshint` command._
|
27 |
|
28 | Task targets, files and options may be specified according to the grunt [Configuring tasks](http://gruntjs.com/configuring-tasks) guide.
|
29 |
|
30 | For more explanations of the lint errors JSHint will throw at you please visit [jslinterrors.com](http://jslinterrors.com/).
|
31 |
|
32 | ### Options
|
33 |
|
34 | Any 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 |
|
39 | A few additional options are supported:
|
40 |
|
41 | #### globals
|
42 | Type: `Object`
|
43 | Default value: `null`
|
44 |
|
45 | A 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
|
48 | Type: `String` or `true`
|
49 | Default value: `null`
|
50 |
|
51 | If set to `true`, no config will be sent to jshint and jshint will search for `.jshintrc` files relative to the flies being linted.
|
52 |
|
53 | If 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
|
70 | Type: `String`
|
71 | Default value: `''`
|
72 |
|
73 | A list of non-dot-js extensions to check.
|
74 |
|
75 | #### ignores
|
76 | Type: `Array`
|
77 | Default value: `null`
|
78 |
|
79 | A list of files and dirs to ignore. This will override your `.jshintignore` file if set and does not merge.
|
80 |
|
81 | #### force
|
82 | Type: `Boolean`
|
83 | Default value: `false`
|
84 |
|
85 | Set `force` to `true` to report JSHint errors but not fail the task.
|
86 |
|
87 | #### reporter
|
88 | Type: `String`
|
89 | Default value: `null`
|
90 |
|
91 | Allows 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 |
|
93 | See also: [Writing your own JSHint reporter.](http://jshint.com/docs/reporters/)
|
94 |
|
95 | #### reporterOutput
|
96 | Type: `String`
|
97 | Default value: `null`
|
98 |
|
99 | Specify 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
|
104 | In 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.
|
108 | grunt.initConfig({
|
109 | jshint: {
|
110 | all: ['Gruntfile.js', 'lib/**/*.js', 'test/**/*.js']
|
111 | }
|
112 | });
|
113 | ```
|
114 |
|
115 | #### Linting before and after concatenating
|
116 | In 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 |
|
118 | In 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.
|
122 | grunt.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 |
|
138 | In 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.
|
142 | grunt.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 |
|
169 | If 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 |
|
175 | You can toggle it by prepending `-` to the warning id as an option:
|
176 |
|
177 | ```js
|
178 | grunt.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 |
|
192 | Occasionally 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
|
195 | grunt.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 |
|
235 | Task submitted by ["Cowboy" Ben Alman](http://benalman.com/)
|
236 |
|
237 | *This file was generated on Sat Nov 16 2013 09:34:14.*
|