Lint your CoffeeScript using gulp and CoffeeLint
npm install gulp-coffeelint> CoffeeLint plugin for [gulp][gulp] 3.
First, install gulp-coffeelint as a development dependency:
``shell`
npm install --save-dev gulp-coffeelint
Then, add it to your gulpfile.js:
`javascript
var gulp = require('gulp');
var coffeelint = require('gulp-coffeelint');
gulp.task('lint', function () {
gulp.src('./src/*.coffee')
.pipe(coffeelint())
.pipe(coffeelint.reporter())
});
`
will walk up the directory tree looking for a coffeelint.json (per file, i.e. dirname) or a package.json that has a coffeelintConfig object (as the cli does). Also, .litcoffee and .coffee.md files will be treated as Literate CoffeeScript.$3
Type: StringAbsolute path of a
json file containing [options][coffeelint-options] for coffeelint.$3
Type: Object[Options][coffeelint-options] you wish to send to
coffeelint. If optFile is given, this will be ignored.$3
Type: BooleanAre we dealing with Literate CoffeeScript?
$3
Type: Array[Function]
Default: []Add custom rules to
coffeelint.Results
Adds the following properties to the
file object:
`javascript
file.coffeelint.success = true; // if no errors were found, false otherwise
file.coffeelint.errorCount = 0; // number of errors returned by coffeelint
file.coffeelint.warningCount = 0; // number of warnings returned by coffeelint
file.coffeelint.results = ErrorReport Object; // instance of Coffeelint::ErrorReport , see https://github.com/clutchski/coffeelint/blob/master/src/error_report.coffee
file.coffeelint.opt = {}; // the options used by coffeelint
file.coffeelint.literate = false; // you guessed it
`Reporters
$3
Type: String, Function
Default: 'coffeelint-stylish'$3
#### Built-in
You can choose any CoffeeLint reporter
when you call
`js
gulp.src('./src/*.coffee')
.pipe(coffeelint())
.pipe(coffeelint.reporter('csv'))
`#### External
Let's use coffeelint-stylish as an example. External modules can be referenced either as
the reporter's constructor function or as its module name.
`js
var stylish = require('coffeelint-stylish');gulp.src('./src/*.coffee')
.pipe(coffeelint())
.pipe(coffeelint.reporter(stylish))
`-- OR --
`js
gulp.src('./src/*.coffee')
.pipe(coffeelint())
.pipe(coffeelint.reporter('coffeelint-stylish'))
`Any module following the CoffeeLint Reporter module format should work. These modules have a constructor accepting a
CoffeeLint::ErrorReport Object, and provide a publish function.$3
Do you want the task to fail when a CoffeeLint error or warning happens? gulp-coffeelint includes
fail and failOnWarning reporters for this.This example will log the errors using the stylish reporter, then fail if CoffeeLint was not a success.
`js
gulp.src('./src/*.coffee')
.pipe(coffeelint())
.pipe(coffeelint.reporter('coffeelint-stylish'))
.pipe(coffeelint.reporter('fail'))
`$3
Specify your own downstream Reporter for CoffeeLint results.
`js
var coffeelint = require('gulp-coffeelint');var myReporter = (function() {
function MyReporter(errorReport) {
this.errorReport = errorReport;
}
MyReporter.prototype.publish = function() {
var hasError = this.errorReport.hasError();
if (hasError) {
return console.log('Oh no!');
}
return console.log('Oh yeah!');
}
return MyReporter;
})();
gulp.task('lint', function() {
return gulp.src('./src/*.coffee')
.pipe(coffeelint())
.pipe(coffeelint.reporter(myReporter));
});
``[gulp]: http://gulpjs.com/
[coffeelint-options]: http://www.coffeelint.org/#options
[npm-url]: https://npmjs.org/package/gulp-coffeelint
[npm-image]: http://img.shields.io/npm/v/gulp-coffeelint.svg
[travis-url]: http://travis-ci.org/janraasch/gulp-coffeelint
[travis-image]: https://travis-ci.org/janraasch/gulp-coffeelint.svg?branch=master
[coveralls-url]: https://coveralls.io/r/janraasch/gulp-coffeelint
[coveralls-image]: https://img.shields.io/coveralls/janraasch/gulp-coffeelint.svg
[depstat-url]: https://david-dm.org/janraasch/gulp-coffeelint
[depstat-image]: https://david-dm.org/janraasch/gulp-coffeelint.svg
[devdepstat-url]: https://david-dm.org/janraasch/gulp-coffeelint#info=devDependencies
[devdepstat-image]: https://david-dm.org/janraasch/gulp-coffeelint/dev-status.svg