Gulp 如果其他文件不存在,则包括文件';不要狼吞虎咽地生存

Gulp 如果其他文件不存在,则包括文件';不要狼吞虎咽地生存,gulp,Gulp,我有一个产品,有一个基本版本,但也为不同的客户定制版本。我正在使用ASP.NET bundleconfigs来包含客户构建的特定文件,但我正在尝试切换到Gulp 这是我的简化目录结构: - App - App / Js - App / Js / Base - App / Js / Base / file1.js - App / Js / Base / file2.js - App / Js / Base / file3.js - App / Js / Customer1 - App / Js /

我有一个产品,有一个基本版本,但也为不同的客户定制版本。我正在使用ASP.NET bundleconfigs来包含客户构建的特定文件,但我正在尝试切换到Gulp

这是我的简化目录结构:

- App
- App / Js
- App / Js / Base
- App / Js / Base / file1.js
- App / Js / Base / file2.js
- App / Js / Base / file3.js
- App / Js / Customer1
- App / Js / Customer1 / file2.js
我需要做的是构建一个JS文件,其中包含Base中的file1.JS、Customer1目录中的file2.JS和Base中的file3.JS

这是Gulp实现的还是我应该在编写插件时考虑的?

您可以使用它来过滤
App/Js/Base/
中那些在
App/Js/Customer1/
中有相应文件的文件

var gulp = require('gulp');
var concat = require('gulp-concat');
var filter = require('gulp-filter');
var addsrc = require('gulp-add-src');
var fileExists = require('file-exists');
var path = require('path');

gulp.task('default', function() {
  return gulp.src('App/Js/Base/*.js')
   .pipe(filter(function(file) {
     return !fileExists.sync('App/Js/Customer1/' + path.basename(file.path));
   }))
   .pipe(addsrc('App/Js/Customer1/*.js'))
   .pipe(concat('all.js'))
   .pipe(gulp.dest('dist'));
});

顺便说一句,addsrc已被弃用。不确定这是否是最近的更改,但文件exists现在返回一个承诺,所以!fileExists(…)始终为false.:(