我有两个文件夹,我只想合并它们(当存在时使用ExtendedFolder文件覆盖BaseFolder文件)
示例:
BaseFolder
---main.js
---test.js
ExtendedFolder
---main.js
预期结果:
ResultFolder
---main.js (from ExtendedFolder)
---test.js (from BaseFolder)
我提出了类似的问题但没有令人满意的答案:Grunt. Programmatically merge corresponding files in parallel folders with concat
答案 0 :(得分:1)
如果您只有两个指定的文件夹并希望合并其内容,那么gulp就会非常简单(这假设文件夹名称之前已知并且不会更改):
var gulp = require('gulp');
gulp.task('moveBase',function(){
return gulp.src('BaseFolder/*')
.pipe(gulp.dest('ResultFolder/'));
});
gulp.task('moveExtended',['moveBase'],function(){
return gulp.src('ExtendedFolder/*')
.pipe(gulp.dest('ResultFolder/'));
});
gulp.task('mergeFolders',['moveBase','moveExtended']);
BaseFolder
中与ExtendedFolder
中的文件同名的文件会被覆盖。
这里的关键是复制的顺序。首先,复制其文件应该被覆盖的文件夹,以防发生冲突。您可以将复制拆分为两个任务并利用依赖关系系统 - 任务moveExtended
取决于moveBase
,以确保以后复制它。
答案 1 :(得分:1)
我能够使用https://www.npmjs.org/package/event-stream
完全按照我的意愿行事var gulp = require('gulp')
, es = require('event-stream');
gulp.task('web_dev', function () {
es.merge(gulp.src('./BaseFolder/**/*')
, gulp.src('./ExtendedFolder/**/*'))
.pipe(gulp.dest('out'));
});