İki borulu deyim ile bir görev var. İkinci boru, değeri birinci boruda beyan edilen global bir değişkene dayanır. Ancak, global değişkene ikinci borudan erişemiyorum. Boru 2, boru 1 bitmeden önce başlıyor gibi görünüyor. Bir Gulp görevinde, ilk boruya bir değişken değeri nasıl ayarlayabilirim ve ikinci borudan okuyabilir miyim?
var responsive = require('gulp-responsive');
var tap = require('gulp-tap');
// global variables for image-generator task
var imageA1Width = 0;
var imageA1Height = 0;
// extracts width and height from image path
function getDimensionsFromPath(path) {
// example image: banner-fooBar-$a1-1000x901.jpg
var path = path || '';
var dimensionsString = '';
var width = 0;
var height = 0;
var re = /[^-]*$/;
dimensionsString = path.match(re)[0];
dimensionsString = dimensionsString.replace('.jpg', '');
dimensionsString = dimensionsString.replace('.png', '');
dimensionsString = dimensionsString.replace('.webp', '');
dimensionsString = dimensionsString.replace('.gif', '');
var dimensionsArr = dimensionsString.split('x');
width = parseInt(dimensionsArr[0], 10);
height = parseInt(dimensionsArr[1], 10);
var obj = {
width: width,
height: height
};
return obj;
}
gulp.task('image-generator', function() {
var imageKeyPattern = /-\$a1.*$/; // example image: banner-fooBar-$a1-1000x901.jpg
return gulp.src('images/**/*$a1*.*')
.pipe(tap(function (file, t) {
var imageA1Path = file.path;
// global variables
imageA1Width = getDimensionsFromPath(imageA1Path).width;
imageA1Height = getDimensionsFromPath(imageA1Path).height;
}))
.pipe(responsive({
'**/*$a1*.*': [{
width: imageA1Width * 2, // NaN
skipOnEnlargement: true,
rename: function (opt) {
opt.basename = opt.basename.replace(imageKeyPattern, '[email protected]');
opt.dirname = '';
return opt;
}
},
]
}))
.pipe(gulp.dest('imagesGenerated/'));
});
bir [fiili çalışma örnek] olmadan bu soruyu cevaplamak için hiçbir yolu yok (http://stackoverflow.com/help/mcve) 'secondThing' ne içerdiğini. –
İyi bir öneri Sven Schoenung, ikinciThing (gulp-responsive) içeren gerçek bir çalışma örneği ekledim. – edt