Javascript ESlint linting gulpfile.js

Javascript ESlint linting gulpfile.js,javascript,gulp,ecmascript-6,eslint,arrow-functions,Javascript,Gulp,Ecmascript 6,Eslint,Arrow Functions,您好,我使用Atom和名为lint eslint的插件来lint我的javascript代码,它确实工作得很好,但我的gulpfile.js上有一个非常恼人的lint错误 下面是触发linting错误的代码,我正在为ESlinter使用airbnb.eslintrc配置文件 gulp.task('lint', () => { return gulp.src(['**/*.js', '!node_modules/**', '!src/**']) .pipe(gulpif(args.ver

您好,我使用Atom和名为lint eslint的插件来lint我的javascript代码,它确实工作得很好,但我的gulpfile.js上有一个非常恼人的lint错误

下面是触发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的早期返回流有关。是否有其他方法返回它或如何更正错误我知道我可以忽略该文件,但我想知道是否有其他方法返回
gulp.src()

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

所涉及的规则是“强制在箭头函数中一致使用大括号”


ES6 arrow函数可以返回不带“return”字样的对象,如下所示:

let func = () => ({key: 'value'});
let a = func();   // and a will be an object {key: 'value'}
gulp.task('lint', () => (
 gulp.src(['**/*.js', '!node_modules/**', '!src/**'])
  .pipe(gulpif(args.verbose, gprint()))
  .pipe(eslint())
  .pipe(eslint.format())
  .pipe(eslint.failAfterError())
));
这是ES6标准

eslint airbnb style guide认为,如果箭头函数只返回一个对象,那么“返回”就没有必要了。因此,您的代码可以如下所示:

let func = () => ({key: 'value'});
let a = func();   // and a will be an object {key: 'value'}
gulp.task('lint', () => (
 gulp.src(['**/*.js', '!node_modules/**', '!src/**'])
  .pipe(gulpif(args.verbose, gprint()))
  .pipe(eslint())
  .pipe(eslint.format())
  .pipe(eslint.failAfterError())
));

请参阅更多:关于返回对象文字。

注意
上次管道调用后应删除,否则会出现语法错误谢谢解释,我将更详细地阅读规范。不知道您答案的第一部分(关于对象)与此处有何关联。谢谢,我猜如果您没有真正彻底阅读arrow语法规范,就会出现这种情况。“当我删除
返回值时,它会消失。”因为
()=>{foo}
不同于
()=>foo
。第一个返回
未定义的
,后者返回
foo
的值。因此他们可能无法像您使用
()=>{return foo;}
那样简单地删除大括号。