Gulp में टास्कों की एसिंक्रोनस प्रकृति
आपको यह समझना चाहिए कि सभी Gulp टास्क - एसिंक्रोनस होती हैं। इसका क्या मतलब है, आइए एक उदाहरण से देखते हैं। मान लीजिए कि एक पब्लिक टास्क के अंदर दो प्राइवेट टास्कें कॉल की जाती हैं:
function taskD(cb) {
task1(cb);
task2(cb);
cb();
}
एसिंक्रोनस होने का मतलब है कि टास्क task2
टास्क task1 के समाप्त होने का इंतजार
नहीं करेगी, बल्कि उसके साथ समानांतर रूप से
कार्य करेगी।
आइए इसे एक और अधिक व्यावहारिक उदाहरण पर सोचते हैं। मान लीजिए पहली टास्क LESS को CSS में बदलती है, और दूसरी टास्क - प्राप्त CSS को मिनिफाई करती है।
ऐसे में हमारे सामने एक समस्या आएगी: आखिरकार CSS फाइल को मिनिफाई तब तक नहीं किया जा सकता, जब तक उसमें LESS कंपाइलेशन का रिजल्ट न आ जाए!
हालाँकि, अगर टास्कें सिंक्रोनस रूप से चलतीं - एक के बाद एक sequentially, तो हमारे सामने एक दूसरी समस्या आती: वे टास्कें जिन्हें समानांतर रूप से किया जा सकता है, वे एक के बाद एक चलकर, Gulp के काम को धीमा कर देतीं। आइए इसे भी एक उदाहरण से सोचते हैं।
मान लीजिए पहली टास्क CSS फाइलों को मिनिफाई करती है, और दूसरी टास्क - JavaScript फाइलों को मिनिफाई करती है। जाहिर है, कि इन दोनों असंबंधित ऑपरेशनों को एक साथ किया जा सकता है।
सौभाग्य से, Gulp ऐसे टूल्स प्रदान करता है, जो स्पष्ट रूप से यह बताने की अनुमति देते हैं कि किन टास्कों को समानांतर रूप से चलाया जाना चाहिए, और किन्हें - क्रमिक रूप से। इन टूल्स को हम अगले पाठ में समझेंगे।
दो ऐसी टास्कों का उदाहरण सोचिए जिन्हें केवल क्रमिक रूप से ही चलाया जाना चाहिए।
दो ऐसी टास्कों का उदाहरण सोचिए जिन्हें केवल समानांतर रूप से ही चलाया जाना चाहिए।