获取through2stream的JSON /string?

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

我想迭代每个zip文件,解压缩它,读取configuration文件,然后使用该configuration文件将zipfile upload到某处。

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文件,然后输出我想看的configuration文件。 然而,在这一点上,我很困惑,我如何parsingconfiguration文件来获取configuration。

我试着parsingconfigFile,阅读文件使用fs.readFileSync(...)

但似乎没有任何工作。 configuration包含上传到的凭据,所以我需要阅读它,然后使用它发送到S3或任何地方configuration。

configFile.contents更改为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); }) ; }); } 
Interesting Posts