Easily use JSLint from the command line.
jslint bin/jslint.js
Added latest jslint, 2015-07-10.
Version 0.9.2 contains the latest jslint-es6, and a bug fix from @bryanjhv jslint-es6 is no longer marked BETA by upstream. In about a month (August, 2015) I plan to release node-jslint 1.0.0 with es6
linting by default.
Version 0.9.0 contains the new BETA version of jslint for EcmaScript 6, which is a ground-up rewrite by Douglas Crockford. The latest
alias still points to the last es5
version of jslint; you can also use --edition=es5
to get the (old) es5 version. To get the es6
version you must use --edition=es6
.
Version 0.7.0 creates a new programmatic interface which is used by https://github.com/hapijs/lab
Version 0.5.1 fixes a regression which crashes jslint when more than maxerr errors are in a single file. Thanks to Vasil Velichkov (@velichkov) for pointing this out.
Version 0.5.0 reorganizes the loading interface, making it easier for other projects to use node-jslint to load a specific jslint edition.
Version 0.4.0 exposes a stream interface to jslint.
Version 0.3.4 supports globbing with * and ** expressions.
Versions 0.2+ provide multiple editions of jslint to address backwards and forwards compatibility.
jslint lib/color.js
jslint --edition=latest lib/color.js
For example, edition 2013-02-03 which shipped with node-jslint 0.1.9:
jslint --edition=2013-02-03 lib/color.js
As of node-jslint 0.4.0, a streams interface is exposed. You can use it in client code like this:
Install as a dependency:
$ npm install --save jslint
Pull it into your code with require:
var LintStream = require('jslint').LintStream;
Create and configure the stream linter:
var options = { "edition": "latest", "length": 100 }, l = new LintStream(options);
Send files to the linter:
var fileName, fileContents; l.write({file: fileName, body: fileContents});
Receive lint from the linter:
l.on('data', function (chunk, encoding, callback) { // chunk is an object // chunk.file is whatever you supplied to write (see above) assert.deepEqual(chunk.file, fileName); // chunk.linted is an object holding the result from running JSLint // chunk.linted.ok is the boolean return code from JSLINT() // chunk.linted.errors is the array of errors, etc. // see JSLINT for the complete contents of the object callback(); });
You can only pass options to the LintStream when creating it. The edition
option can be used to select different editions of JSLint.
The LintStream is in object mode (objectMode: true). It expects an object with two properties: file
and body
. The file
property can be used to pass metadata along with the file. The body
property contains the file to be linted; it can be either a string or a Buffer.
The LintStream emits 'data'
events containing an object with two properties. The file
property is copied from the file
property that is passed in. The linted
property contains the results of running JSLINT.
The simple interface provides an edition-aware loader. This can be used as a frontend to node-jslint's collection of editions of the JSLINT code.
var node_jslint = require('jslint'), JSLINT = node_jslint.load(edition);
This exposes the same loading interface used in node-jslint, so it supports the special edition names default
and latest
as well as date-based edition names such as 2013-08-26
As of version 0.5.0, the load
function also accepts filenames. To be recognized as a filename, the argument to load must contain a path-separator character (/
or \
) or end with the extension .js
.
Multiple files
jslint lib/color.js lib/reporter.js
All JSLint options supported
jslint --white --vars --regexp lib/color.js
Defaults to true, but you can specify false
jslint --bitwise false lib/color.js
Pass arrays
jslint --predef $ --predef Backbone lib/color.js
JSLint your entire project
jslint '**/*.js'
Start with the included jslint.conf.example
file, name it jslint.conf
and customize your options per project or copy it to $HOME/.jslint.conf
to apply your setting globally
See LICENSE file.