Условно игнорировать файлы в gulp.src

Исходный код используется для 2 проектов, каждый проект имеет некоторый общий код. Я хочу условно игнорировать модуль / папку / каталог с помощью задачи gulp.

Когда я следую, это работает отлично

return gulp.src(
  config.appMarkupFiles
  '!app/settings', '!app/settings/**'
)

Однако я хочу сделать это условно. Я также попробовал следующий код, используя gulp-filter, который не работает для меня.

var isQA = $.yargs.argv.stage === 'qa';

var filterSettings = $.filter(['!app/settings{, /**}'])
return gulp.src(
  config.appMarkupFiles
)
.pipe(($.if(isQA,$.filter(filterSettings)))

структура папок только для справки

1 ответ

Решение

Ваш gulpfile - это просто JavaScript, поэтому вы можете использовать троичный оператор для условного исключения файлов в gulp.src():

var isQA = $.yargs.argv.stage === 'qa';

gulp.task('default', function() {
  return gulp.src([config.appMarkupFiles].concat((isQA) ? ['!app/settings{,/**}'] : []))
    .pipe(gulp.dest('dist'));
});

С помощью gulp-filter работает, но в вашем коде было две ошибки:

  1. Там есть ненужное место в !app/settings{, /**} а также
  2. Вы подаете заявку $.filter дважды.

Вот рабочее решение с использованием gulp-filter:

var isQA = $.yargs.argv.stage === 'qa';

gulp.task('default', function() {
  return gulp.src(config.appMarkupFiles)
    .pipe($.if(isQA, $.filter(['!app/settings{,/**}'])))
    .pipe(gulp.dest('dist'));
});
Другие вопросы по тегам