使用 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 文件的数组值