获得 JSON/String 的 through2 流?
Get JSON/String of through2 stream?
我有一堆 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);
})
;
});
}
这似乎显示了我要查看的所有压缩文件,然后它输出了我要查看的配置文件。但是此时我对如何解析配置文件以获取配置感到困惑。
我尝试解析配置文件,使用 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);
})
;
});
}
我有一堆 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);
})
;
});
}
这似乎显示了我要查看的所有压缩文件,然后它输出了我要查看的配置文件。但是此时我对如何解析配置文件以获取配置感到困惑。
我尝试解析配置文件,使用 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);
})
;
});
}