簡體   English   中英

在Gulp中進行concat之后刪除原始文件

[英]Delete original files after concat in Gulp

我想合並我的文件並將其寫到單個文件中,然后我想刪除原始文件。 我應該如何在默認任務中解決此問題?

var es = require('event-stream');
var concat = require('gulp-concat');
var unique = require('array-unique');

function concatGroup(groupName, group){

    return gulp.src(unique(group.files))
        .pipe(concat(groupName + '.js'))
        .pipe(gulp.dest(group.target));
}

gulp.task('default', function () {
    var groups = {
        test: {
            files: [array of files],
            target: "target dir"
        },
        test2: {
            files: [array of files],
            target: "target dir"
        },
        test3: {
            files: [array of files],
            target: "target dir"
        }
    };

    var streams = [];
    for (var groupName in groups) {
        streams.push(concatGroup(groupName, groups[groupName]));
    }
    return es.concat.apply(es, streams);
});

只需偵聽流中的end事件,然后使用del

var concat = require('gulp-concat');
var unique = require('array-unique');
var del = require('del');

gulp.task('default', function (done) {
  var groupName = "test",
      group = {
        files: [array of files],
        target: "target dir"
      };

  var files = unique(group.files)
  gulp.src(files)
    .pipe(concat(groupName + '.js'))
    .pipe(gulp.dest(group.target))
    .on('end', function() {
      del(files).then(function() {
        done();
      });
    });
});

謝謝大家的幫助,這是我的最終代碼,可以正常工作。 我只需要創建一個新的空流並將其返回以進行事件流合並,並在刪除文件時將此操作標記為完成。

var es = require('event-stream');
var concat = require('gulp-concat');
var unique = require('array-unique');
var del = require('del');

function concatGroup(groupName, group) {

    var stream = through.obj();

    gulp.src(unique(group.files))
        .pipe(concat(groupName + '.js'))
        .pipe(gulp.dest(group.target))
        .on('end', function () {
            del(group.files).then(function () {
                stream.end();
            });
        });

    return stream;
}

gulp.task('default', function () {
    var groups = {
        test: {
            files: [array of files],
            target: "target dir"
        },
        test2: {
            files: [array of files],
            target: "target dir"
        },
        test3: {
            files: [array of files],
            target: "target dir"
        }
    };

    var streams = [];
    for (var groupName in groups) {
        streams.push(concatGroup(groupName, groups[groupName]));
    }
    return es.concat.apply(es, streams);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM