3

たくさんの 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 または構成された場所に送信する必要があります。

4

1 に答える 1

4

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);
      })
      ;
  });

}
于 2015-11-30T08:45:49.940 に答える