2016-06-03 6 views
2

Hallo ich benutze Atom und Plugin namens Fussel-eslint für meine JavaScript-Code Fusseln und es funktioniert gut, aber ich habe ein wirklich ärgerlich Fusseln Fehler auf meinem gulpfile.jsESlint Fusseln gulpfile.js

Hier ist der Code, löst Linting-Fehler aus, ich benutze Airbnb .eslintrc Konfigurationsdatei für ESlinter.

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

Beachten Sie, dass ich versuche, Pfeil-Syntax zu verwenden. Ich erhalte folgenden Fehler Unerwartete Blockanweisung umgebenden Pfeil Körper. Und wenn ich die return entferne es geht weg.

Es hat mit dem frühen Rückstrom von gulp src zu tun, gibt es eine andere Möglichkeit, es zurückzugeben oder wie korrigiere ich den Fehler ich weiß, ich kann die Datei ignorieren, aber ich möchte wissen, ob es einen anderen Weg gibt, zurückzukehren gulp.src()

+0

* "Wenn ich den' return' entferne, geht es weg. "* Weil'() => {foo} 'sich von'() => foo' unterscheidet. Die erste gibt "undefined" zurück, die zweite gibt den Wert von "foo" zurück. Daher können sie die geschweiften Klammern nicht einfach entfernen, wie Sie es mit '() => {return foo; } '. –

Antwort

1

ES6 Pfeil Funktion kann ein Objekt ohne Wort 'Rückkehr' wie folgt zurück:

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

Dies ist ES6 Standard.

Und eslint-airbnb style guide glaubt, dass, wenn Ihre Pfeil-Funktion nur ein Objekt zurückgibt, die 'Rückkehr' nicht notwendig ist. So könnte Ihr Code aussehen:

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

mehr Siehe: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions über Objektliterale Rückkehr.

+0

beachten Sie, dass die ';' nach dem letzten Pipe-Aufruf entfernt werden sollte, sonst ist es ein Syntaxfehler – floribon

+0

Dank für die Erinnerung ~~ –

+0

Danke für die Erklärung werde ich die Spezifikationen im Detail lesen. – ukaric

2

Da Ihre Funktion einfach einen Wert zurückgeben, können Sie die geschweiften Klammern weglassen {} und die return Anweisung, die den Code leichter und einfacher zu lesen macht.

Die Regel ist arrow-body-style welche "erzwingt die konsequente Verwendung von Klammern in Pfeilfunktionen".

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

Danke, ich denke, das passiert, wenn Sie die Pfeilsyntax-Spezifikation nicht wirklich gründlich lesen. – ukaric