la montre s'arrête lorsque des messages d'erreur se produisent.
stream.js:94
throw er; // Unhandled stream error in pipe.
^
source string:51: error: invalid property name
Comment garder la montre en marche et juste pour me dire où se trouve l'erreur.
grunt pourrait gérer les erreurs et n'a pas besoin de s'arrêter,
styleSheet.scss:41: error: invalid property name
sinon, je dois continuer à taper "gulp" dans la ligne de commande lorsqu'une erreur se produit.
Cette réponse a été ajoutée pour refléter les modifications récentes apportées à Gulp. J'ai conservé la réponse originale, pour la pertinence de la question des PO. Si vous utilisez Gulp 2.x, passez à la deuxième section
Vous pouvez modifier ce comportement par défaut en passant errLogToConsole: true
En option à la méthode sass()
.
Votre tâche pourrait ressembler à ceci, en ce moment:
gulp.task('sass', function () {
gulp.src('./*.scss')
.pipe(sass())
.pipe(gulp.dest('./'));
});
Modifiez la ligne .pipe(sass())
pour inclure l'option errLogToConsole: true
:
.pipe(sass({errLogToConsole: true}))
Voici à quoi devrait ressembler la tâche, avec la journalisation des erreurs:
gulp.task('sass', function () {
gulp.src('./*.scss')
.pipe(sass({errLogToConsole: true}))
.pipe(gulp.dest('./'));
});
La sortie des erreurs sera désormais en ligne, comme ceci:
[gulp] [gulp-sass] source string:1: error: invalid top-level expression
Vous pouvez en savoir plus sur gulp-sass
Options et configuration , sur nmpjs.org
Dans Gulp 2.x errLogToConsole
ne peut plus être utilisé. Heureusement, gulp-sass
A une méthode pour gérer les erreurs. Utilisez on('error', sass.logError)
:
gulp.task('sass', function () {
gulp.src('./sass/**/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('./css'));
});
Si vous avez besoin d'un contrôle plus fin, n'hésitez pas à fournir une fonction de rappel:
gulp.task('sass', function () {
gulp.src('./sass/**/*.scss')
.pipe(sass()
.on('error', function (err) {
sass.logError(err);
this.emit('end');
})
)
.pipe(gulp.dest('./css'));
});
C'est un bon fil à lire si vous avez besoin de plus d'informations sur le contrôle de processus: https://github.com/gulpjs/gulp/issues/259#issuecomment-55098512
En fait, les réponses ci-dessus ne fonctionnent pas pour moi (j'utilise gulp-sass 3.XX). Ce qui a vraiment fonctionné:
gulp.task('sass', function () {
return gulp.src(config.scssPath + '/styles.scss')
.pipe(sourcemaps.init())
.pipe(sass({ outputStyle: 'compressed' })
.on('error', sass.logError)
)
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest(config.cssPath))
});
Dans gulp-sass 3.x.x lorsque j'utilisais "sass.logError (err);" Je reçois constamment l'erreur que "this.emit ('end'); n'est pas une fonction". Maintenant, quand j'utilise:
.pipe(sass({ outputStyle: 'compressed' })
.on('error', sass.logError)
)
tout fonctionne comme un charme
Dans gulp "^ 2.0.0", l'option errLogToConsole
ne fonctionnera plus. Au lieu de cela, gulp-sass
A un rappel de journalisation des erreurs intégré qui utilise gulp-util
Sous le capot. De plus, comme gulp a des problèmes pour tuer le processus en cas d'erreur, si vous utilisez avec watch
, vous devrez appeler this.emit('end')
https://github.com/gulpjs/gulp/issues/259 # issuecomment-55098512
var sass = require('gulp-sass');
//dev
sass(config.sassDev)
.on('error', function(err) {
sass.logError(err);
this.emit('end'); //continue the process in dev
})
)
//prod
sass(config.sassProd).on('error', sass.logError)
A avertit les utilisateurs de Gulp 3:
J'ai aimé la solution @dtotheftp ci-dessus, concernant gulp 2.x. Fait intéressant, cela ne fonctionne pas sous Gulp3, du moins pas sous @ 3.9.1:
.on('error', function(err){
sass.logError(err);
this.emit('end'); //continue the process in dev
})
me prend
TypeError: this.emit is not a function
at Function.logError (/depot/myproject/node_modules/gulp-sass/index.js:181:8)
Notez que la plainte ne vient pas de sa this.emit()
dans le gulpfile mais plutôt du noeud-module sass, donc de la ligne précédente.
Cela fonctionne pour moi:
.on('error', function(err){
gutil.log(err);
this.emit('end');
})
J'obtiens toutes les erreurs², et la montre ne se termine jamais;) (J'utilise également plumber()
juste après gulp.src()
, ce qui pourrait aider à cela).
(Oui, le correctif peut être très illogique, car sass.logError est basé sur gutil ...)
-
² également sur des macros non définies qui se sont tues auparavant sur ma configuration pour une raison quelconque.