覆盖gulp流中的文件

覆盖gulp流中的文件,gulp,Gulp,我有以下目录结构: common -services --service1.js --service2.js -app --gulpfile.js --src ---services ----service1.js ----service3.js 我想做一个gulp任务,它将从公共目录中获取所有文件,从应用程序目录中获取文件,并用原始流中相同的文件名替换所有文件。在那之后,我将把它浓缩并写入其他目录。 我试过这个: var gulp = require('gulp'), merge =

我有以下目录结构:

common
-services
--service1.js
--service2.js
-app
--gulpfile.js
--src
---services
----service1.js
----service3.js
我想做一个gulp任务,它将从公共目录中获取所有文件,从应用程序目录中获取文件,并用原始流中相同的文件名替换所有文件。在那之后,我将把它浓缩并写入其他目录。 我试过这个:

var gulp = require('gulp'),
    merge = require('gulp-merge'),
    concat = require('gulp-concat');
 gulp.task('templates', function () {
  return merge(
    gulp.src(['../common/**/*.js']),
    gulp.src(['src/**/*.js'])
  )
    .pipe(concat('app.js'))
    .pipe(gulp.dest('build/js'));
});
我希望在dest/app.js中获得common/services/service2.js、app/src/services/service1.js、app/src/services/service3.js的内容。 但是我得到了所有文件的内容。 我试图更改cwd或gulp.src的base,但没有效果。
我知道我可以将这个流写入tmp目录,然后从中获取文件,但它看起来并不像gulp风格的解决方案。那么,如何在streams中覆盖具有相同文件名的文件呢?

好的,我找不到任何现有的解决方案,所以我编写了自己的gulp插件: