[英]List all files in array with gulp.src()
我正在尝试为给定文件夹中的所有文件(路径)创建索引。 到目前为止,我使用gulp.src(filePath)
来实现这一点。 根据这篇博客文章,它应该可以工作:
gulp.src(files) 是包含文件/文件路径的字符串或数组。
我目前的代码:
gulp.task("createFileIndex", function(){
var index = gulp.src(['./content/**/*.*']);
console.log("INDEX:", index[0]);
});
通过使用index[0]
输出gulp.src()
的返回值,我得到了undefined
并且整个index
只输出一个没有任何文件路径的大字典。
目前的解决办法是:
var gulp = require('gulp');
var debug = require('gulp-debug');
gulp.src(sources)
.pipe(debug());
正如 OP 在评论中所述,这个问题的一个简单解决方案是使用fs.readdirSync
而不是gulp.src
:
fs = require("fs");
fs.readdirSync(directoryPath); // ["file1", "file2"]
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); }); });
根据gulp.src ( https://github.com/gulpjs/gulp/blob/master/docs/API.md#gulpsrcglobs-options ) 上的gulp文档
gulp.src(globs[, options])
发出与提供的 glob 或一组 glob 匹配的文件。 返回可以通过管道传输到插件的 Vinyl 文件流。
gulp.src('client/templates/*.jade') .pipe(jade()) .pipe(minify()) .pipe(gulp.dest('build/minified_templates'));
glob 是指 node-glob 语法,也可以是直接文件路径。
球体
类型:字符串或数组
要读取的 Glob 或 glob 数组。
选项
类型:对象
通过 glob-stream 传递给 node-glob 的选项。
gulp 除了 node-glob 和 glob-stream 支持的选项外,还增加了一些额外的选项
因此,您似乎需要进一步研究这一点。 否则这可能有帮助在 gulp.src() 中获取当前文件名
如果您想要的是来自 glob(如 gulp.src)的文件名数组,请使用:
const glob = require('glob');
const fileArray = glob.sync('./content/**/*.*');
或者你可以使用原生 Node.js 函数readdirSync
const fs = require('fs');
const syncImgFolder = (done) => {
const files = fs.readdirSync('/path/');
}
您可以在 gulp 4 中执行以下操作:
gulp.src(['./lib/file3.js', './lib/file1.js', './lib/file2.js'])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.