pruno-eslint
Version:
A simple eslint module for pruno with babeljs (es6/7/react) support.
82 lines (70 loc) • 1.87 kB
JavaScript
var path = require('path');
var eslint = require('gulp-eslint');
var plumber = require('gulp-plumber');
var assign = require('object-assign');
function ESLintTask(params) {
this.params = params;
}
ESLintTask.displayName = "ESLintTask";
ESLintTask.getDefaults = function() {
return {
"envs": {
"browser": true,
"node": true
},
"rules": {
"radix": 1,
"max-nested-callbacks": [2, 3],
"no-new-wrappers": 2,
"no-sequences": 2,
"no-var": 2,
"generator-star": [1, "end"],
"max-params": [1, 3],
"max-depth": [1, 2],
"max-len": [2, 80, 4],
"strict": 0,
"no-underscore-dangle": 0,
"no-unused-vars": 0,
"curly": 0,
"no-multi-spaces": 0,
"key-spacing": 0,
"no-return-assign": 0,
"consistent-return": 0,
"no-shadow": 0,
"no-comma-dangle": 0,
"no-use-before-define": 0,
"no-empty": 0,
"new-parens": 0,
"no-cond-assign": 0
},
"dirs": ["::src/**/*.js", "./api/**/*.js"],
"search": ["::src/**/*.js", "./api/**/*.js"],
"format": "stylish",
"useEslintrc": true
}
};
ESLintTask.prototype.enqueue = function(gulp, params) {
var LINT_RULES = [
"rulePaths", "configFile", "reset", "useEslintrc",
"rules", "globals", "envs" , "env"
];
var options = Object.keys(params).reduce(function(memo, group) {
if (LINT_RULES.indexOf(group) > -1) {
memo[group] = assign({}, params[group]);
}
return memo;
}, {});
var dirs = params.dirs.map(function(dir) {
return module.parent.require('path').resolve(dir);
});
gulp.src(dirs)
.pipe(eslint(options))
.pipe(plumber())
.pipe(eslint.format())
.pipe(eslint.failAfterError());
};
ESLintTask.prototype.generateWatcher = function(gulp, params) {
return true;
};
module.exports = ESLintTask;