/grunt-linter

A Grunt task for running JSHint or JSLint

Primary LanguageJavaScriptMIT LicenseMIT

grunt-linter

Validates JavaScript files with JSHint or JSLint as a grunt task. JSHint is bundled with the plugin.

Installation

Install this grunt plugin next to your project's grunt.js gruntfile with: npm install grunt-linter

Then add this line to your project's grunt.js gruntfile:

grunt.loadNpmTasks('grunt-linter');

Documentation

A single-task to validate your JavaScript files with JSHint or JSLint.

Supports the following options:

files
An array of files or wildcards which you want to be validated with the linter.
<dt>exclude</dt>
<dd>A String/filepath/wildcard option which, when provided, tells the plugin which files should be ignored (not scanned).
</dd>

<dt>directives</dt>
<dd>Configuration options/settings to pre-define in JSHint.</dd>

<dt>globals</dt>
<dd>Pre-defined globals; should be an object: <code>{
	jQuery: true
}</code></dd>

<dt>options</dt>
<dd>Configuration options/settings for the plugin itself.  Currently supports the following:

	<dl>
		<dt>errorsOnly</dt>
		<dd>A Boolean option which tells the plugin to only display errors when set to `true`.</dd>

		<dt>log</dt>
		<dd>A String/filepath option which, when provided, tells the plugin where to write a verbose log to.</dd>

		<dt>junit</dt>
		<dd>A String/filepath option which, when provided, tells the plugin where to write a JUnit-style XML file to.</dd>

		<dt>linter</dt>
		<dd>A String/filepath option which, when provided, tells the plugin where to load JSHint or JSLint from.</dd>

	</dl>

</dd>

Example Usage

/*jslint node:true*/

module.exports = function (grunt) {

	'use strict';

	grunt.loadNpmTasks('grunt-linter'); // load the task

	grunt.initConfig({
		watch: {
			files: '<config:linter.files>',
			tasks: 'linter'
		},

		// TAKE NOTE - this has changed since 0.1.8

		linter: { // configure the task
			files: [ // some example files
				'grunt.js',
				'src/**/*.js'
			],
			exclude: [
				'**/ignore-*.js',
				'bananas.js'
			],
			directives: { // example directives
				browser: true,
				todo: true
			},
			globals: {
				jQuery: true
			},
			options: {
				junit: 'out/junit.xml', // write the output to a JUnit XML
				log: 'out/lint.log',
				errorsOnly: true, // only display errors
				linter: '/path/to/jshint.js'
			}
		}

	});

	grunt.registerTask('default', 'watch');
};

Release History

  • 0.3.3 - JSHint updated to 2.4.x
  • 0.3.2 - JSHint updated to 1.1.x
  • 0.3.1 - JSHint 1.0.0 released on npm. Removed JSHint submodule and replaced with an npm dependency.
  • 0.3.0 - Removed Grunt 0.3.x support, updated to JSHint 1.0.0 and improved .jshintrc support. /*exported directive is now supported!
  • 0.2.1 - Actual Grunt 0.4.0 support (expandFiles issue)
  • 0.2.0 - Grunt 0.4.0 support.
  • 0.1.2 - Added .jshintrc support. Example .jshintrc
  • 0.1.1 - Made options optional
  • 0.1.0 - Forked from grunt-jslint; first release

License

Copyright (c) 2012 David Sturley, Stephen Mathieson Licensed under the MIT license.