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 回答