簡體   English   中英

如何使用gulp.src()獲取正在處理的當前文件名

[英]How to fetch current filename that is being processed using gulp.src()

我必須在文件夾中的多個json文件上運行某些gulp任務,但該任務將根據文件名獲取不同位置的文件。

我可以通過在cmd中將文件名作為參數傳遞來運行任務,但我想自動化腳本,以便為src位置中的所有文件執行它。

gulp.task("writeJSON", function() {
    dataObj = require("./src/data/" + argv["filename"] + ".json");
    dataObjKeysList = require("./src/data/stats/" + argv["filename"] + ".json");
    segregateData(dataObj, dataObjKeysList, tabspace, false);
    gulp
      .src("./src/metadata.html")
      .pipe(rename(argv["filename"] + ".html"))
      .pipe(gulp.dest("./src/output"));
  });

任何幫助將不勝感激。

我能夠使用節點文件流解決上述問題。 我發現這篇有用的文章

Filewalker來源

使用下面的實用程序函數,它將目錄路徑和回調作為args。

  function filewalker(dir, done) {
      let results = [];

      fs.readdir(dir, function(err, list) {
          if (err) return done(err);

          var pending = list.length;

          if (!pending) return done(null, results);

          list.forEach(function(file){
              file = path.resolve(dir, file);

              fs.stat(file, function(err, stat){
                  // If directory, execute a recursive call
                  if (stat && stat.isDirectory()) {
                      // Add directory to array [comment if you need to remove the directories from the array]
                      results.push(file);

                      filewalker(file, function(err, res){
                          results = results.concat(res);
                          if (!--pending) done(null, results);
                      });
                  } else {
                      results.push(file);
                      if (!--pending) done(null, results);
                  }
              });
          });
      });
  };

在我的gulp任務中添加了以下執行

filewalker("./src/data/stats/" , function(err, dataFilesList){
        if(err){
            throw err;
        }
        dataFilesList.map((name) => {
            let fileName = path.basename(name); 
            fileName = fileName.split('.')[0];
            gutil.log('Generating ' + fileName + '.html file.');
       });
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM