@FlapJalc

Как определить директорию через таск?

Есть папка с ресурсами (resources) где я храню статические файлы фавиконы, robots.txt и прочие конфигурационные файлы. Так же у меня там есть несколько директорий. Так вот директории со своим содержимым должны копироваться в директорию dist/assets, а файлы которые лежат вне этих директорий (в корне resourses) должны копироваться в dist. Мне удалось это реализовать способом ниже.
gulp.task("copy", function () {
  gulp.src(['src/resources/**', '!src/resources/{{fonts,files},{fonts,files}/**}'])
  .pipe(gulp.dest("dist"))
  gulp.src("src/resources/{fonts,files}/**")
  .pipe(gulp.dest("dist/assets"))
});

Но если если я создам в resources ещё одну директорию с файлами, мне нужно будет добавлять её в таске. А можно ли сделать так, чтобы таск сам определял всё папки лежащие в resources и отправлял по указанному в таксе пути.
  • Вопрос задан
  • 39 просмотров
Решения вопроса 2
@RAX7
Разделить файлы и папки с помощью fs.lstatSync(name).isDirectory() и покопировать что и куда нужно.
Что-то типа такого:
const fs = require('fs');

gulp.task('copy', function(done) {
  const allFiles = fs.readdirSync('./');
  const allStats = allFiles.reduce((stats, name) => {
    fs.lstatSync(name).isDirectory() ? stats.dirs.push(name) : stats.files.push(name);
    return stats;
  }, {files: [], dirs: []});
  
  gulp.src(allStats.files)
    .pipe(gulp.dest("dist"));
  
  gulp.src(allStats.dirs)
    .pipe(gulp.dest("dist/assets"));

  done();
});
Ответ написан
@loopi
// выбрать только папки
src(['src/resources/**','!src/resources/*.*'])

// выбрать только файлы
src(['src/resources/*.*'])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы