【问题标题】:List all files in array with gulp.src()使用 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 只输出一个没有任何文件路径的大字典。

【问题讨论】:

    标签: javascript gulp


    【解决方案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'])
            

            【讨论】:

              猜你喜欢
              • 2015-10-13
              • 1970-01-01
              • 1970-01-01
              • 2015-12-25
              • 2013-05-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多