blob: 2f68e58cea4f4caf329764c9ddd774c4856e614d [file] [log] [blame] [view]
## node-jslint
Easily use [JSLint][] from the command line.
jslint bin/jslint.js
## What's New
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.
## Use the command-line client
### Use the default jslint
jslint lib/color.js
### Always use the latest jslint
jslint --edition=latest lib/color.js
### Use a specific edition
For example, edition 2013-02-03 which shipped with node-jslint 0.1.9:
jslint --edition=2013-02-03 lib/color.js
## Use node-jslint programmatically
### Streams interface
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.
### Simple interface
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`.
## Usage examples
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'
## Using JSLint with a config file
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
## License
See LICENSE file.
[JSLint]: http://jslint.com/