如何让 Gulp 处理同一个文件两次?
How can I make Gulp process the same file twice?
我正在使用 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?
您可以使用带合并的流队列:
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'));
});
这样你就不会将多个文件传递给你的进程(这不起作用),而是将多个流(不同的)传递给你的进程
我正在使用 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?
您可以使用带合并的流队列:
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'));
});
这样你就不会将多个文件传递给你的进程(这不起作用),而是将多个流(不同的)传递给你的进程