0

単純な gulpfile がありますが、期待どおりに実行されません。

var gulp = require('gulp');
var rename = require('gulp-rename');
var mapStream = require('map-stream');
var fs = require('fs');

gulp.task('default', function () {
    gulp.src('123.js')
        .pipe(log('before'))
        .pipe(rename({prefix: '_'}))
        .pipe(gulp.dest('.'))
        .pipe(log('after'))
    ;
});

function log (txt) {
    return mapStream(function (file, cb) {
        console.log(txt, fs.statSync(file.path).size, !!file.contents.toString());
        cb();
    });
}

「前」のみを記録し、「後」は記録しません。なぜ?

4

2 に答える 2

1

ストリームを返す必要があります:

gulp.task('default', function () {
    return gulp.src('123.js')
        .pipe(log('before'))
        .pipe(rename({prefix: '_'}))
        .pipe(gulp.dest('.'))
        .pipe(log('after'));
});
于 2014-02-07T19:29:46.843 に答える
1

Sindreが提案したようにストリームを返すことに加えて、ストリームを介してデータを渡すために、「file」を「map-stream」のコールバック関数に渡す必要があります。

function log (txt) {
    return mapStream(function (file, cb) {
        console.log(txt, fs.statSync(file.path).size, !!file.contents.toString());
        cb(null, file);
    });
}
于 2014-02-10T13:09:41.393 に答える