问题 仅包含if存在


我想在gulp中包含一个文件,只要它存在,我正在编译时,用于开发。目前我有以下内容:

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

我需要向此数组添加另一个文件,但仅限于该文件存在。我见过 gulp-if 但我不认为我有能力寻找。

我还想警告开发人员,在控制台中进行开发编译时,该文件不存在。


6145
2017-08-28 14:43


起源



答案:


Gulp只是一个节点应用程序,因此您可以在gulpfile中使用任何节点函数。您可以使用轻松检查文件的存在 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/'))
});

16
2017-08-28 14:47



你能提供一个例子来说明如何在gulp任务中使用它来编译js吗? - user3379926
当然,编辑的答案。 - Brian Glaz
第一个选项 gulp.src 可以是一个 String 要么 Array 而不存在的文件被忽略,所以我认为这可以简化为 gulp.src(['src/js/**/*.js', 'path/to/other/file']) - Paolo Moretti
@PaoloMoretti会起作用。但OP表示,如果该文件不存在,他们想要警告开发者。 - Brian Glaz
@BrianGlaz哦,对不起我没听清楚。在这种情况下,我猜你必须手动检查文件是否存在。你也可以使用 gulp-expect-file :) - Paolo Moretti


答案:


Gulp只是一个节点应用程序,因此您可以在gulpfile中使用任何节点函数。您可以使用轻松检查文件的存在 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/'))
});

16
2017-08-28 14:47



你能提供一个例子来说明如何在gulp任务中使用它来编译js吗? - user3379926
当然,编辑的答案。 - Brian Glaz
第一个选项 gulp.src 可以是一个 String 要么 Array 而不存在的文件被忽略,所以我认为这可以简化为 gulp.src(['src/js/**/*.js', 'path/to/other/file']) - Paolo Moretti
@PaoloMoretti会起作用。但OP表示,如果该文件不存在,他们想要警告开发者。 - Brian Glaz
@BrianGlaz哦,对不起我没听清楚。在这种情况下,我猜你必须手动检查文件是否存在。你也可以使用 gulp-expect-file :) - Paolo Moretti