2014-08-28 52 views
11

我正在寻找包含一个文件,只有当它存在,当我正在编译时,用于开发。目前我有以下几种:只包括,如果存在

gulp.task('compile:js:development', function() { 
    return gulp.src([ 
    'src/js/**/*.js', 
    ]).pipe(concat('dist.js')) 
    .pipe(gulp.dest('compiled/js/')) 
}); 

我需要添加另一个文件到这个数组,但只有当该文件存在。我看过gulp-if但我不认为这有我正在寻找的能力。

我也想在编译进行控制台开发时警告开发者该文件不存在。

回答

16

Gulp只是一个节点应用程序,所以你可以在你的gulp文件中使用任何节点函数。你可以很容易地检查使用fs.exists()

gulp.task('compile:js:development', function() { 
    var fs = require('fs'), 
     files = ['src/js/**/*.js'], 
     extraFile = 'path/to/other/file'; 

    if (fs.existsSync(extraFile)) { 
    files.push(extraFile); 
    } else { 
    console.log('FILE DOES NOT EXIST'); 
    } 

    return gulp.src(files) 
    .pipe(concat('dist.js')) 
    .pipe(gulp.dest('compiled/js/')) 
}); 
+0

你能提供一个将如何使用这一口任务编译JS一个例子的文件是否存在? – user3379926 2014-08-28 15:00:14

+1

确定,编辑答案。 – 2014-08-28 15:05:20

+1

'gulp.src'中的第一个选项可以是'String'或'Array',并且不存在的文件将被忽略,所以我认为这可以简化为'gulp.src(['src/js/** /*.js','path/to/other/file'])' – 2014-08-28 15:16:55