使用nodejs,grunt或gulp合并文件夹的最佳方法

我有两个文件夹,我只是想合并它们(当存在时用ExtendedFolder覆盖BaseFolder文件)

例:

BaseFolder ---main.js ---test.js

ExtendedFolder ---main.js

预期结果:

ResultFolder ---main.js (from ExtendedFolder) ---test.js (from BaseFolder)

我问过类似的问题,但没有一个令人满意的答案: Grunt。 以编程方式将并行文件夹中的相应文件与concat合并

编辑:我刚刚意识到我以前的答案是行不通的。 我张贴新的代码。

如果你只有两个指定的文件夹,并且想要合并它们的内容,那么使用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 ,以确保将在稍后被复制。

我能够使用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')); });