2013-03-15 26 views
19

Tôi đang sử dụng Grunt để biên dịch CoffeeScript và Stylus bằng nhiệm vụ đồng hồ. Tôi cũng có trình soạn thảo của tôi (SublimeText) thiết lập để lưu các tập tin mỗi khi tôi rời xa chúng (tôi ghét mất việc).Làm thế nào để bạn làm cho grunt.js không sụp đổ trên các cảnh báo theo mặc định?

Thật không may, nếu Grunt gặp lỗi cú pháp trong bất kỳ tệp nào mà nó biên dịch, nó sẽ gửi cảnh báo và thoát với Aborted due to warnings. Tôi có thể dừng việc này bằng cách đi qua số --force. Có cách nào để không hủy bỏ hành vi mặc định (hoặc kiểm soát các cảnh báo của nhiệm vụ đủ quan trọng để thoát khỏi Grunt?

Trả lời

28

Đăng ký nhiệm vụ của riêng bạn, thao tác này sẽ chạy các tác vụ bạn muốn. :.

grunt.registerTask('myTask', 'runs my tasks', function() { 
    var tasks = ['task1', ..., 'watch']; 

    // Use the force option for all tasks declared in the previous line 
    grunt.option('force', true); 
    grunt.task.run(tasks); 
}); 
+3

Tùy chọn này sẽ hoạt động cho tất cả các tác vụ còn lại trong chuỗi. Tôi có một hack khác trong một câu trả lời cho [câu hỏi này] (http://stackoverflow.com/questions/16612495/continue-certain-tasks-in-grunt-even-if-one-fails/16972894#16972894) – explunit

+0

Couldn ' bạn chỉ cần làm grunt.option ('force', false); sau khi chạy các nhiệm vụ? –

3

tôi đã cố gắng asgoth 's giải pháp với Adam Hutchinson' đề nghị s, nhưng thấy rằng cờ lực lượng đã được thiết lập trở lại ngay lập tức false Đọc grunt.task tài liệu API cho grunt.task.run, nó khẳng định rằng

Mọi tác vụ được chỉ định trong taskList sẽ được chạy ngay lập tức sau khi tác vụ hiện tại hoàn tất, theo thứ tự được chỉ định.

Điều đó có nghĩa là tôi không thể đơn giản đặt cờ buộc trở lại thành false ngay sau khi gọi grunt.task.run. Giải pháp mà tôi đã tìm thấy là có các tác vụ rõ ràng đặt cờ buộc thành false sau đó:

grunt.registerTask('task-that-might-fail-wrapper','Runs the task that might fail wrapped around a force wrapper', function() { 
    var tasks; 
    if (grunt.option('force')) { 
     tasks = ['task-that-might-fail']; 
    } else { 
     tasks = ['forceon', 'task-that-might-fail', 'forceoff']; 
    } 
    grunt.task.run(tasks); 
}); 

grunt.registerTask('forceoff', 'Forces the force flag off', function() { 
    grunt.option('force', false); 
}); 

grunt.registerTask('forceon', 'Forces the force flag on', function() { 
    grunt.option('force', true); 
}); 
Các vấn đề liên quan