【问题标题】:How can I make Gulp process the same file twice?如何让 Gulp 两次处理同一个文件?
【发布时间】:2015-04-24 11:06:47
【问题描述】:

我正在使用 gulp 快速将一堆 sql 文件连接在一起(不要问)。

gulp.task('sqlConcat', ['copy'], function () {
    var sqlFiles = [
        'GenericHeader.sql',
        'Sql1.sql',
        'GenericHeader.sql',
        'Sql2.sql',
        'Sql3.sql'
    ];
    gulp.src(sqlFiles)
        .pipe(wrap('-- \n-- <%= file.relative %> \n-- \n\n<%= contents %>'))
        .pipe(concat('ConcatenatedSql.sql'))
        .pipe(gulp.dest('release'))
});

我遇到的问题是 gulp 只处理 GenericHeader.sql 文件一次,并在第二次出现时忽略它。

有没有办法覆盖默认行为并使 gulp 第二次包含 GenericHeader.sql?

【问题讨论】:

  • 我不这么认为。只需创建另一个在此之后运行的任务来单独包装该文件。

标签: gulp gulp-concat


【解决方案1】:

您可以使用带有合并的流队列:

var gulp = require('gulp');
var concat = require('gulp-concat');
var wrap = require('gulp-wrap');
var merge = require('merge2');

gulp.task('default', function() {
    return merge(
        gulp.src(['GenericHeader.sql', 'Sql1.sql']),
        gulp.src(['GenericHeader.sql', 'Sql2.sql', 'Sql3.sql'])
    )
    .pipe(wrap('<%= contents %>'))
    .pipe(concat('concat.sql'))
    .pipe(gulp.dest('dest'));
});

这样您就不会将多个文件传递给您的进程(这不起作用),而是多个流(它们是不同的)

【讨论】:

  • 宾果游戏。这很有效,并且清楚地说明了文件如何在逻辑上组合在一起,谢谢!
猜你喜欢
  • 2011-05-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 2016-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多