ESlint linting gulpfile.js

时间:2016-06-03 16:10:55

标签: javascript gulp ecmascript-6 eslint arrow-functions

您好我使用Atom和插件lint-eslint来提示我的javascript代码,它确实工作正常,但我的gulpfile.js上有一个非常讨厌的linting错误

以下是触发linting错误的代码,我正在为ESlinter使用airbnb .eslintrc配置文件。

gulp.task('lint', () => {
 return gulp.src(['**/*.js', '!node_modules/**', '!src/**'])
 .pipe(gulpif(args.verbose, gprint()))
 .pipe(eslint())
 .pipe(eslint.format())
 .pipe(eslint.failAfterError());
});

请注意,我正在尝试使用箭头语法。 我正在跟踪错误围绕箭头体的意外阻止语句。  当我删除return它就会消失。

它与gulp src的早期返回流有关还有其他方法可以返回它或者我如何更正错误我知道我可以忽略该文件但我想知道是否有其他方式返回{ {1}}

2 个答案:

答案 0 :(得分:2)

由于您的函数只返回一个值,因此您可以省略大括号{}return语句,这样可以使代码更轻松,更易于阅读。

所涉及的规则是arrow-body-style“强制在箭头功能中强制使用大括号”

gulp.task('lint', () => 
  gulp.src(['**/*.js', '!node_modules/**', '!src/**'])
   .pipe(gulpif(args.verbose, gprint()))
   .pipe(eslint())
   .pipe(eslint.format())
   .pipe(eslint.failAfterError())
);

答案 1 :(得分:1)

ES6箭头函数可以返回没有单词'return'的对象,如下所示:

let func = () => ({key: 'value'});
let a = func();   // and a will be an object {key: 'value'}

这是ES6标准。

而eslint-airbnb风格指南认为,如果你的箭头功能除了返回一个物体之外什么都不做,那么“返回”就没有必要了。所以你的代码可以这样:

gulp.task('lint', () => (
 gulp.src(['**/*.js', '!node_modules/**', '!src/**'])
  .pipe(gulpif(args.verbose, gprint()))
  .pipe(eslint())
  .pipe(eslint.format())
  .pipe(eslint.failAfterError())
));

查看更多:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions关于返回对象文字。