Как исключить все содержимое каталога в gulp.src, но оставить в нем .htaccess?

gulp.src позволяет выбирать файлы и каталоги по заданному пути или шаблону, используя миниматч синтаксис.
Чтобы исключить все содержимое каталога, но оставить в нем файл .htaccess, вы можете использовать различные подходы.

1. Используйте отрицательную операцию в шаблоне пути:

gulp.src(['path/to/directory/**/*', '!path/to/directory/.htaccess'])

В этом примере path/to/directory/**/* выберет все файлы и каталоги в path/to/directory, а '!path/to/directory/.htaccess' исключит файл .htaccess.

2. Можно использовать gulp-filter, который позволяет фильтровать исходные файлы:

var gulp = require('gulp');
var filter = require('gulp-filter');

gulp.task('filter-example', function() {
  var fileFilter = filter(['**/*', '!**/.htaccess'], { restore: true });

  return gulp.src('path/to/directory/**/*')
    .pipe(fileFilter)
    .pipe(/*добавьте необходимые операции здесь*/)
    .pipe(fileFilter.restore)
    .pipe(/*добавьте дополнительные операции здесь*/)
    .pipe(gulp.dest('output/'));
});

В этом примере мы используем gulp-filter для создания фильтра файла с образцом '**/*', но исключаем '.htaccess'. Затем мы передаем только отфильтрованные файлы через один или несколько этапов обработки. На последнем шаге, перед сохранением результата .pipe(fileFilter.restore), файл .htaccess будет восстановлен и сохранен.

3. Используйте плагин gulp-ignore для исключения файлов, удовлетворяющих шаблону пути:

var gulp = require('gulp');
var ignore = require('gulp-ignore');

gulp.task('ignore-example', function() {
 return gulp.src('path/to/directory/**/*')
  .pipe(ignore.exclude('**/.htaccess'))
  .pipe(/*добавьте необходимые операции здесь*/)
  .pipe(gulp.dest('output/'));
});

В этом примере, файл .htaccess будет исключен в результате игнорирования и затем будут применены дополнительные операции.

Однако, помимо указанных решений, можно также использовать другие плагины Gulp в зависимости от конкретной ситуации и требований вашего проекта.