2014-08-28 47 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