Validate files with JSHint.
Note that this plugin has not yet been released, and only works with the latest bleeding-edge, in-development version of grunt. See the When will I be able to use in-development feature 'X'? FAQ entry for more information.
If you haven't used grunt before, be sure to check out the Getting Started guide, as it explains how to create a gruntfile as well as install and use grunt plugins. Once you're familiar with that process, install this plugin with this command:
npm install grunt-contrib-jshint --save-dev
Run this task with the grunt jshint
command.
This task is a [multi task][] so any targets, files and options should be specified according to the [multi task][] documentation. [multi task]: https://github.com/gruntjs/grunt/wiki/Configuring-tasks
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.
A few additional options are supported:
Type: Object
Default value: null
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.
Type: String
Default value: null
If this filename is specified, options and globals defined therein will be used. The jshintrc
file must be valid JSON and looks something like this:
{
"curly": true,
"eqnull": true,
"eqeqeq": true,
"undef": true,
"globals": {
"jQuery": true
}
}
In this example, running grunt jshint:all
(or grunt jshint
because jshint
is a [multi task][]) 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.
// Project configuration.
grunt.initConfig({
jshint: {
all: ['Gruntfile.js', 'lib/**/*.js', 'test/**/*.js']
}
});
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 concat
task.
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
.
// Project configuration.
grunt.initConfig({
concat: {
dist: {
src: ['src/foo.js', 'src/bar.js'],
dest: 'dist/output.js'
}
},
jshint: {
beforeconcat: ['src/foo.js', 'src/bar.js'],
afterconcat: ['dist/output.js']
}
});
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.
// Project configuration.
grunt.initConfig({
jshint: {
options: {
curly: true,
eqeqeq: true,
eqnull: true,
browser: true,
globals: {
jQuery: true
},
},
uses_defaults: ['dir1/**/*.js', 'dir2/**/*.js'],
with_overrides: {
options: {
curly: false,
undef: true,
},
files: {
src: ['dir3/**/*.js', 'dir4/**/*.js']
},
}
},
});
- 2013-01-17 v0.1.1rc6 Updating grunt/gruntplugin dependencies to rc6. Changing in-development grunt/gruntplugin dependency versions from tilde version ranges to specific versions.
- 2013-01-08 v0.1.1rc5 Updating to work with grunt v0.4.0rc5. Switching to this.filesSrc api.
- 2012-10-17 v0.1.0 Work in progress, not yet officially released.
Task submitted by "Cowboy" Ben Alman
This file was generated on Fri Jan 18 2013 10:16:06.