发生错误消息时,监视停止.
stream.js:94
throw er; // Unhandled stream error in pipe.
^
source string:51: error: invalid property name
Run Code Online (Sandbox Code Playgroud)
我怎样才能保持手表运行,只是告诉我错误位于何处.
grunt可以处理错误而不需要停止,
styleSheet.scss:41: error: invalid property name
Run Code Online (Sandbox Code Playgroud)
否则,我需要在发生错误时在命令行中输入"gulp".
cha*_*tic 83
此答案已附加,以反映Gulp最近的变化.我保留了原始回复,与OPs问题相关.如果您使用的是Gulp 2.x,请跳至第二部分
您可以通过将errLogToConsole: true选项作为选项传递给sass()方法来更改此默认行为.
你的任务现在看起来像这样:
gulp.task('sass', function () {
gulp.src('./*.scss')
.pipe(sass())
.pipe(gulp.dest('./'));
});
Run Code Online (Sandbox Code Playgroud)
更改.pipe(sass())行以包含errLogToConsole: true选项:
.pipe(sass({errLogToConsole: true}))
Run Code Online (Sandbox Code Playgroud)
这是错误记录的任务应该是这样的:
gulp.task('sass', function () {
gulp.src('./*.scss')
.pipe(sass({errLogToConsole: true}))
.pipe(gulp.dest('./'));
});
Run Code Online (Sandbox Code Playgroud)
错误输出现在将是内联的,如下所示:
[gulp] [gulp-sass] source string:1: error: invalid top-level expression
Run Code Online (Sandbox Code Playgroud)
您可以在nmpjs.org上阅读有关gulp-sass选项和配置的更多信息
在Gulp 2.x中errLogToConsole可能不再使用.幸运的是,gulp-sass有一种处理错误的方法.用途on('error', sass.logError):
gulp.task('sass', function () {
gulp.src('./sass/**/*.scss')
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('./css'));
});
Run Code Online (Sandbox Code Playgroud)
如果您需要更细粒度的控制,请随意提供回调函数:
gulp.task('sass', function () {
gulp.src('./sass/**/*.scss')
.pipe(sass()
.on('error', function (err) {
sass.logError(err);
this.emit('end');
})
)
.pipe(gulp.dest('./css'));
});
Run Code Online (Sandbox Code Playgroud)
如果您需要有关过程控制的更多信息,这是一个很好的读取线程:https://github.com/gulpjs/gulp/issues/259#issuecomment-55098512
bor*_*r4g 11
实际上以上的anwsers对我不起作用(我使用gulp-sass 3.XX).什么真的有用:
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))
});
Run Code Online (Sandbox Code Playgroud)
当我使用"sass.logError(err);"时,在gulp-sass 3.xx中 我经常发现错误"this.emit('end');不是函数".现在当我使用时:
.pipe(sass({ outputStyle: 'compressed' })
.on('error', sass.logError)
)
Run Code Online (Sandbox Code Playgroud)
一切都像魅力一样
在gulp"^ 2.0.0"中,该选项errLogToConsole将不再有效.而是gulp-sass有一个内置的错误记录回调,gulp-util在引擎盖下使用.此外,由于gulp在查找错误时遇到了一些问题,如果您正在使用,watch则需要调用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)
Run Code Online (Sandbox Code Playgroud)