ray-gulp-eslint
Version:
use eslint with gulp
64 lines (62 loc) • 2.67 kB
JavaScript
;
function gulpEslint(t) {
t = util.migrateOptions(t) || {};
var r = new CLIEngine(t);
return util.transform(function(n, e, l) {
var i = path.relative(process.cwd(), n.path);
if (n.isNull()) return void l(null, n);
if (n.isStream()) return void l(new PluginError("gulp-eslint", "gulp-eslint doesn't support vinyl files with Stream contents."));
if (r.isPathIgnored(i)) return r.options.ignore && t.warnFileIgnored && (n.eslint = util.createIgnoreResult(n)), void l(null, n);
var u;
try {
u = r.executeOnText(n.contents.toString(), i).results[0]
} catch (t) {
return void l(new PluginError("gulp-eslint", t))
}
t.quiet ? n.eslint = util.filterResult(u, t.quiet) : n.eslint = u, n.eslint.hasOwnProperty("output") && (n.contents = Buffer.from(n.eslint.output), n.eslint.fixed = !0), l(null, n)
})
}
var PluginError = require("gulp-util").PluginError,
CLIEngine = require("eslint").CLIEngine,
util = require("./util"),
path = require("path");
gulpEslint.result = function(t) {
if ("function" != typeof t) throw new Error("Expected callable argument");
return util.transform(function(r, n, e) {
r.eslint ? util.tryResultAction(t, r.eslint, util.handleCallback(e, r)) : e(null, r)
})
}, gulpEslint.results = function(t) {
if ("function" != typeof t) throw new Error("Expected callable argument");
var r = [];
return r.errorCount = 0, r.warningCount = 0, util.transform(function(t, n, e) {
t.eslint && (r.push(t.eslint), r.errorCount += t.eslint.errorCount, r.warningCount += t.eslint.warningCount), e(null, t)
}, function(n) {
util.tryResultAction(t, r, util.handleCallback(n))
})
}, gulpEslint.failOnError = function() {
return gulpEslint.result(function(t) {
var r = util.firstResultMessage(t, util.isErrorMessage);
if (r) throw new PluginError("gulp-eslint", {
name: "ESLintError",
fileName: t.filePath,
message: r.message,
lineNumber: r.line
})
})
}, gulpEslint.failAfterError = function() {
return gulpEslint.results(function(t) {
var r = t.errorCount;
if (r) throw new PluginError("gulp-eslint", {
name: "ESLintError",
message: "Failed with " + r + (1 === r ? " error" : " errors")
})
})
}, gulpEslint.formatEach = function(t, r) {
return t = util.resolveFormatter(t), r = util.resolveWritable(r), gulpEslint.result(function(n) {
return util.writeResults([n], t, r)
})
}, gulpEslint.format = function(t, r) {
return t = util.resolveFormatter(t), r = util.resolveWritable(r), gulpEslint.results(function(n) {
n.length && util.writeResults(n, t, r)
})
}, module.exports = gulpEslint;