gulp-run icon indicating copy to clipboard operation
gulp-run copied to clipboard

how to do something with stderr?

Open lunelson opened this issue 9 years ago • 2 comments

I'm currently using this plugin to run the binary of libsass (sassc) for testing purposes. What I would really like is a way to capture the stderr to a file. Currently with {verbosity: 1} the stderr is output in the terminal but what I really need for these purposes is to capture it to a file. Is there a way? My setup is as follows. You'll see that I use gulp-plumber to capture 'error' events but the output I'm interested in (they are compiler warnings in fact, not errors) is output to stderr without triggering an actual 'error' event, so this only works for fatal errors at the moment

gulp.task('sassc', function () {
  gulp.src('test.scss', { buffer: false })
    .pipe(plumber(function(err) {
        var errorTxt = err.message +'\n\n'+ err.source;
        gutil.beep();
        gutil.log(gutil.colors.red(errorTxt));
        fs.writeFile('test.log', errorTxt);
    }))
    .pipe(rename(function (path) { path.extname = ".css"; }))
    .pipe(run('/applications/libsass/sassc/bin/sassc -s', {verbosity: 1}))
    .pipe(buffer())
    .pipe(autoprefixer({
        browsers: ['last 5 versions'],
        cascade: false
    }))
    .pipe(gulp.dest('.'))
});

lunelson avatar Dec 12 '14 13:12 lunelson

Currently the stderr of the process is not exposed, but that could easily be changed. Do you have any suggestions for an interface?

Perhaps there could be an option called stderr that takes a stream/buffer/vinyl that receives the stderr of the command. Something like

var buffer = new Buffer();
run('echo hello world', {stderr: buffer}).exec();

cbarrick avatar Dec 25 '14 15:12 cbarrick

I think I don't know enough about this too suggest something sensible. Maybe I made a false assumption but I was imagining that gulp must have some kind of convention such that the complete stdio could be passed along the stream and be available to subsequent plugins—is that not the case?

lunelson avatar Dec 30 '14 11:12 lunelson