使用 gulp.src() 列出数组中的所有文件

Posted

技术标签:

【中文标题】使用 gulp.src() 列出数组中的所有文件【英文标题】:List all files in array with gulp.src() 【发布时间】:2015-10-24 15:07:47 【问题描述】:

我正在尝试为给定文件夹中的所有文件(路径)创建索引。到目前为止,我与gulp.src(filePath) 合作实现了这一目标。根据这个blog post,它应该可以工作:

gulp.src(files) 是包含文件/文件路径的字符串或数组。

我当前的代码:

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

通过输出gulp.src()index[0] 的返回值,我得到undefined,整个index 只输出一个没有任何文件路径的大字典。

【问题讨论】:

【参考方案1】:

目前的解决方案是:

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

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

【讨论】:

这是最好的答案:避免所有不必要的额外代码,只显示测试此功能所需的最少代码。【参考方案2】:

正如 OP 在评论中所述,解决此问题的一个简单方法是使用 fs.readdirSync 而不是 gulp.src

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

根据 gulp.src (https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulpsrcglobs-options) 上的 gulp 文档

gulp.src(globs[, options])

发出与提供的 glob 或 glob 数组匹配的文件。返回一个 可以通过管道传输到插件的乙烯基文件流。

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

glob 指的是 node-glob 语法,也可以是直接文件路径。

球体

类型:字符串或数组

要读取的全局或全局数组。

选项

类型:对象

通过 glob-stream 传递给 node-glob 的选项。

gulp 除了支持的选项外,还添加了一些额外的选项 通过 node-glob 和 glob-stream

所以看来您需要进一步了解这一点。否则这可能会有所帮助Get the current file name in gulp.src()

【讨论】:

我使用 nodejs 的内部 js 库创建了一个解决方法。 fs.readdirSync() 列出已定义文件夹的所有文件。【参考方案5】:

如果您想要的只是来自 glob(如 gulp.src)的文件名数组,请使用:

const glob = require('glob');

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

【讨论】:

【参考方案6】:

或者你可以使用原生 Node.js 函数readdirSync

const fs = require('fs');

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

【讨论】:

【参考方案7】:

您可以在 gulp 4 中执行以下操作:

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

【讨论】:

以上是关于使用 gulp.src() 列出数组中的所有文件的主要内容,如果未能解决你的问题,请参考以下文章

gulp.src() 没有读取所需的 JSON 文件的数组值

Gulp globs匹配规则

gulp.src基本选项适用于一个数组项

gulp常用插件

[如何在mac下使用gulp] 2. gulp模块的常用方法

精通gulp常用插件