user3147268
user3147268

Reputation: 1884

List all files in array with gulp.src()

I'm trying to create an index of all file(path)s within a given folder. So far I worked with gulp.src(filePath) to achieve that. According to this blog post, it should work:

gulp.src(files) is a string or array containing the file(s) / file paths.

My current code:

gulp.task("createFileIndex", function(){
    var index = gulp.src(['./content/**/*.*']);
    console.log("INDEX:", index[0]);
});

By outputing the returned values of gulp.src() with index[0] I get undefined and the whole index outputs only a large dictionary without any filepaths.

Upvotes: 20

Views: 34924

Answers (7)

Tibor
Tibor

Reputation: 73

Or you can use native Node.js function readdirSync

const fs = require('fs');

const syncImgFolder = (done) => {
    const files = fs.readdirSync('/path/');
}

Upvotes: 0

Wildhammer
Wildhammer

Reputation: 2175

You can do the following in gulp 4 :

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

Upvotes: -2

Mark
Mark

Reputation: 180885

If all you want is the array of filenames from a glob (like gulp.src) use:

const glob = require('glob');

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

Upvotes: 5

fdr
fdr

Reputation: 71

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);
        });
});

Upvotes: 7

Blitz
Blitz

Reputation: 259

The current solution is:

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

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

Upvotes: 14

Chase Sandmann
Chase Sandmann

Reputation: 5005

As the OP stated in a comment, a simple solution to this problem would be to use fs.readdirSync instead of gulp.src:

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

Upvotes: 9

Rokie
Rokie

Reputation: 222

According to the gulp documentation on gulp.src (https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulpsrcglobs-options)

gulp.src(globs[, options])

Emits files matching provided glob or an array of globs. Returns a stream of Vinyl files that can be piped to plugins.

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

glob refers to node-glob syntax or it can be a direct file path.

globs

Type: String or Array

Glob or array of globs to read.

options

Type: Object

Options to pass to node-glob through glob-stream.

gulp adds some additional options in addition to the options supported by node-glob and glob-stream

So it seems you need to look in further on this. Otherwise this maybe helpful Get the current file name in gulp.src()

Upvotes: 4

Related Questions