Список всех файлов в массиве с gulp.src()

Я пытаюсь создать индекс всех файлов (путей) в пределах определенной папки. До сих пор я работал с gulp.src(filePath) для достижения этого. В соответствии с этим сообщением gulp.task("createFileIndex", function(){ var index = gulp.src(['./content/**/*.*']); console.log("INDEX:", index[0]); });

Вывод возвращаемых значений gulp.src() с помощью index[0] я получаю undefined, а весь index выводит только большой словарь без каких-либо путей к файлу.

Ответ 1

В соответствии с документацией gulp на gulp.src (https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulpsrcglobs-options)

gulp.src(globs [, options])

Испускает файлы, соответствующие предоставленному glob или массив глобусов. Возвращает поток виниловых файлов, которые могут быть подключены к плагинам.

gulp.src('client/templates/*.jade')
  .pipe(jade())
  .pipe(minify())
  .pipe(gulp.dest('build/minified_templates'));

glob ссылается на синтаксис node -glob, или это может быть прямой путь к файлу.

шарики

Тип: String или Array

Glob или массив глобусов для чтения.

опции

Тип: Объект

Параметры для перехода к node -glob через glob-поток.

gulp добавляет дополнительные опции в дополнение к поддерживаемым параметрам node -glob и glob-stream

Итак, вам нужно посмотреть дальше. В противном случае это может быть полезно Получить текущее имя файла в gulp.src()

Ответ 2

Как указано в комментарии OP, простым решением этой проблемы было бы использовать fs.readdirSync вместо gulp.src:

fs = require("fs");
fs.readdirSync(directoryPath); // ["file1", "file2"]

Ответ 3

Текущее решение:

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

gulp.src(sources)
  .pipe(debug());

Ответ 4

var through = require('through2');
gulp.task('getFileList', function () {
    var fileList = [];
    gulp.src(['./someFolder/**/*.ext', '!./someFolder/unwantedFolder/**/*'])
        .pipe(through.obj(function (file, enc, cb) {
            fileList.push(file.path);
            cb(null);
        }))
        .pipe(gulp.dest('./temp/'))
        .on ('end', function () {
            console.log(fileList);
        });
});

Ответ 5

Если вам нужен только массив имен файлов из глобуса (например, gulp.src), используйте:

const glob = require('glob');

const fileArray = glob.sync('./content/**/*.*');

Ответ 6

В gulp 4 вы можете сделать следующее:

gulp.src(['./lib/file3.js', './lib/file1.js', './lib/file2.js'])