# gulp-jscs [![Build Status](https://travis-ci.org/jscs-dev/gulp-jscs.svg?branch=master)](https://travis-ci.org/jscs-dev/gulp-jscs)
> Check JavaScript code style with [JSCS](http://jscs.info)
![](screenshot.png)
*Issues with the output should be reported on the JSCS [issue tracker](https://github.com/jscs-dev/node-jscs/issues).*
## Install
```
$ npm install --save-dev gulp-jscs
```
## Usage
### Reporting
```js
const gulp = require('gulp');
const jscs = require('gulp-jscs');
gulp.task('default', () => {
return gulp.src('src/app.js')
.pipe(jscs())
.pipe(jscs.reporter());
});
```
### Fixing
```js
const gulp = require('gulp');
const jscs = require('gulp-jscs');
gulp.task('default', () => {
return gulp.src('src/app.js')
.pipe(jscs({fix: true}))
.pipe(gulp.dest('src'));
});
```
### Reporting & fixing & failing on lint error
```js
const gulp = require('gulp');
const jscs = require('gulp-jscs');
gulp.task('default', () => {
return gulp.src('src/app.js')
.pipe(jscs({fix: true}))
.pipe(jscs.reporter())
.pipe(jscs.reporter('fail'))
.pipe(gulp.dest('src'));
});
```
## Results
A `jscs` object will be attached to the file object.
An example with one error might look like this:
```js
{
success: false, // or true if no errors
errorCount: 1, // number of errors in the errors array
errors: [{ // an array of jscs error objects
filename: 'index.js', // basename of the file
rule: 'requireCamelCaseOrUpperCaseIdentifiers', // the rule which triggered the error
message: 'All identifiers must be camelCase or UPPER_CASE', // error message
line: 32, // error line number
column: 7 // error column
}]
};
```
## API
JSCS [config](http://jscs.info/overview.html#options) should be placed in a `.jscsrc` file.
### jscs([options])
#### options
##### fix
Type: `boolean`
Default: `false`
Make JSCS attempt to auto-fix your files.
Be sure to pipe to `gulp.dest` if you use this option.
##### configPath
Type: `string`
Default: JSCS will search for the config file up to your home directory.
Set the path to the JSCS config file.
Only use this option when it can't be found automatically.
### jscs.reporter([reporter])
#### reporter
Type: `string`
Default: `console`
See the JSCS [reporter docs](http://jscs.info/overview#-reporter-r) for supported input.
Can be used multiple times in the same pipeline.
This plugin also ships with some custom reporters:
- `fail` - Emits an error at the end of the stream if there are lint errors.
- `failImmediately` - Emits an error immediately if there are lint errors.
## License
MIT © [Sindre Sorhus](http://sindresorhus.com)