2015-02-12 19 views
7

Tôi đang cố gắng để làm cho nó như vậy nếu một lá cờ --theme không được chỉ định, nó dừng nhiệm vụ gulp và tự hỏi cách tốt nhất để làm điều đó một cách DRY.Stop Gulp Task nếu các điều kiện được đáp ứng

Tôi muốn mỗi tác vụ riêng lẻ dừng lại nếu một --theme không được chỉ định và cũng có tác vụ mặc định dừng nếu nó không được đáp ứng.

Tôi đã thử một vài điều không có may mắn cho đến nay.

Cảm ơn,

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']); 

Trả lời

1

Một số loại chức năng async có thể giúp bạn ở đây. Có lẽ như thế này:

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

Tôi nghĩ rằng cách dễ nhất là tạo ra một hàm verifyArgs đó ném một lỗi khi yêu cầu không được đáp ứng:

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']); 
10

Bạn chỉ có thể ngăn chặn kịch bản với:

process.exit() 
Các vấn đề liên quan