2

私は browserify を使用して、複数のファイルを複数のターゲットにコンパイルするのをリッスンしています (このトリックを使用):

gulp.task('js', function () {
    var bundler = through2.obj(function (file, enc, next) {
        browserify(file.path).bundle(function(err, res) {
            file.contents = res;
            next(null, file);
        });
    });

    return gulp.src(['foo.js', 'bar.js'])
        .pipe(bundler)
        .pipe(uglify())
        // Other pipes
        .pipe(gulp.dest('./compiled'));
});

この through2 の使用法を watchify と組み合わせるにはどうすればよいですか? vinyl-source-stream の使用に関する一般的なアドバイスは、私には当てはまりません。2 つのファイル (compiled/foo.js とcompiled/bar.js) を生成したいと考えています。ファイルを1つに結合したくありません。

4

1 に答える 1

1

through2 と watchify を組み合わせる方法を見つけました。秘訣は、更新を呼び出さないことです。next()

var bundler = through.obj(function (file, enc, next) {
    var b = watchify(browserify(file.path))

    b.on('update', function () {
        gutil.log('Updated', gutil.colors.magenta(file.path));

        b.bundle(function (err, res) {
            file.contents = res;
            // Do not call next!
        });

        b.on('log', gutil.log);
    }

    b.bundle(function (err, res) {
        file.contents = res;
        next(null, file);
    });
});
于 2015-06-30T06:35:18.433 に答える