UNPKG

gulp-jshint

Version:
54 lines (41 loc) 1.47 kB
var PluginError = require('plugin-error'); var stream = require('../stream'); var defaults = require('lodash/defaults'); exports.failReporter = require('./fail'); exports.loadReporter = function (reporter) { // we want the function if (typeof reporter === 'function') return reporter; // object reporters if (typeof reporter === 'object' && typeof reporter.reporter === 'function') return reporter.reporter; // load jshint built-in reporters if (typeof reporter === 'string') { try { return exports.loadReporter(require('jshint/src/reporters/' + reporter)); } catch (err) {} } // load full-path or module reporters if (typeof reporter === 'string') { try { return exports.loadReporter(require(reporter)); } catch (err) {} } }; exports.reporter = function (reporter, reporterCfg) { reporterCfg = reporterCfg || {}; if (reporter === 'fail') { return exports.failReporter(reporterCfg); } var rpt = exports.loadReporter(reporter || 'default'); if (typeof rpt !== 'function') { throw new PluginError('gulp-jshint', 'Invalid reporter'); } // return stream that reports stuff return stream(function (file, cb) { if (file.jshint && !file.jshint.success && !file.jshint.ignored) { // merge the reporter config into this files config var opt = defaults({}, reporterCfg, file.jshint.opt); rpt(file.jshint.results, file.jshint.data, opt); } cb(null, file); }); };