获取through2流的JSON/String



我有一堆zip文件,每个文件都包含一个.config文件。

我想迭代每个zip,解压缩它,读取配置文件,并使用该配置文件将zip文件上传到某个地方。

gulp.task('deploy-zips', function () {
  const filter = config()[target].filter;
  return gulp.src([destination + '/' + filter])
    .pipe(deployZips());
});

这是任务的入口点。

function deployZips() {
  return through({ objectMode: true }, function (zipFile, zipEncoding, zipCallback) {
    gutil.log(zipFile.path.split('\').reverse()[0]);
    gulp.src(zipFile.path)
      .pipe(unzip({
        filter : function(entry){
          if (entry.type !== 'File') {
            return false;
          }
          return entry.path.indexOf('deploy-config.json') > -1;
        }
      }))
      .pipe(through({ objectMode: true }, function(configFile, configEncoding, uploadCallback){
          gutil.log(configFile.path); // Outputs the file name as deploy-config.json
          //????
          var config = JSON.parse(configFile);
          uploadCallback(null, configFile);
      }))
      .on('end', function() {
          zipCallback(null, zipCallback);
      })
      ;
  });
}

这似乎显示了我想要的所有zip文件,然后它输出了我想要查看的配置文件。然而,在这一点上,我很困惑如何解析配置文件来获得配置。

我已经尝试解析configFile,使用fs.readFileSync(...) 读取该文件

但似乎什么都不起作用。配置包含要上传到的凭据,所以我需要读取它,然后使用它将它发送到S3或其配置的位置。

configFile更改为configFile.contents

var config=JSON.parse(configFile.contents);

请参阅https://github.com/gulpjs/vinyl#file

function deployZips() {
  return through({ objectMode: true }, function (zipFile, zipEncoding, zipCallback) {
    gutil.log(zipFile.path.split('\').reverse()[0]);
    gulp.src(zipFile.path)
      .pipe(unzip({
        filter : function(entry){
          if (entry.type !== 'File') {
            return false;
          }
          return entry.path.indexOf('deploy-config.json') > -1;
        }
      }))
      .pipe(through({ objectMode: true }, function(configFile, configEncoding, uploadCallback){
          gutil.log(configFile.path); // Outputs the file name as deploy-config.json
          var config = JSON.parse(configFile.contents);
          uploadCallback(null, configFile);
      }))
      .on('end', function() {
          zipCallback(null, zipCallback);
      })
      ;
  });
}

相关内容

  • 没有找到相关文章

最新更新