2015-02-12 15 views
7

Bir bayrak belirtilmemişse, işi gulp görevini durdurarak ve DRY yolunda yapmanın en iyi yolunu merak etmesini sağlamaya çalışıyorum.Koşullar yerine getirilirse, Gülp Görevini Durdurun

Her bir görev - eğer bir belirtilmemişse ve aynı zamanda karşılanmadığı takdirde varsayılan görev durağı varsa durmasını isterim.

Şimdiye kadar şanssız birkaç şey denedim.

sayesinde zaman uyumsuz fonksiyonunun

gulp.task('test', function() { 

    if(typeof(args.theme) == 'undefined' || args.theme === true) { 
     console.log(msg.noTheme); 
     return; // end task 
    } 

    // run rest of task... 

}); 

gulp.task('test-2', function() { 

    if(typeof(args.theme) == 'undefined' || args.theme === true) { 
     console.log(msg.noTheme); 
     return; // end task 
    } 

    // run rest of task... 

}); 

gulp.task('default', ['test-1', 'test-2']); 

cevap

1

çeşit burada yardımcı olabilir. Belki böyle:

function verifyArgs() { 
    if(typeof(args.theme) == 'undefined' || args.theme === true) { 
    throw Error(msg.noTheme); 
    } 
} 

gulp.task('test', function() { 
    verifyArgs(); 
    // run rest of task... 
}); 

gulp.task('test-2', function() { 
    verifyArgs(); 
    // run rest of task... 
}); 

gulp.task('default', ['test-1', 'test-2']); 
5

Ben kolay yolu gereksinimleri yerine getirilmediği bir hata atar bir verifyArgs işlev oluşturmak olacağını düşünüyorum:

process.exit() 
10

Sadece komut dosyasını durdurabilirsiniz:

function processArgs(callback) { 
    if(typeof(args.theme) == 'undefined' || args.theme === true) { 
    return callback(new Error('Theme Not Defined')); 
    } 
    return callback(); 
} 

gulp.task('test', function(done) { 
    processArgs(function(err) { 
    if(err) { 
     console.log(err); 
     return done(err); 
    } 

    //else run my task 
    }) 
});