ग्रंट - कार्य बनाना

इस अध्याय में, हम कार्यों को बनाने के बारे में सीखते हैं । जब भी आप ग्रंट चलाते हैं, तो एक या अधिक कार्यों को चलाने के लिए निर्दिष्ट किया जाता है जो ग्रंट को सूचित करता है कि आप क्या करना चाहते हैं। यदि आप डिफ़ॉल्ट कार्य निर्दिष्ट करते हैं , तो यह डिफ़ॉल्ट रूप से चलेगा।

उपनाम के कार्य

जब भी कार्यों की एक सूची निर्दिष्ट की जाती है, तो एक या एक से अधिक अन्य कार्यों को एक नए कार्य द्वारा अलियास किया जा सकता है। उपनाम चलाने से टास्कलिस्ट में प्रत्येक निर्दिष्ट कार्य चलेंगेकार्यसूची तर्क कार्यों की एक सरणी के रूप में नीचे दिखाया गया होना चाहिए -

grunt.registerTask(taskName, [description, ] taskList)

उदाहरण के लिए, जब आप एक परिभाषित कार्यसूची के साथ JSHint , concat, और बदसूरत बनाना कार्यों और निर्दिष्ट taskName के रूप में डिफ़ॉल्ट , सभी सूचीबद्ध कार्य स्वचालित रूप से अगर चलाया जाएगा ग्रंट किसी भी कार्य निर्धारित किए बिना ही मार डाला जाता है।

grunt.registerTask('default', ['jshint', 'concat', 'uglify']);

आप नीचे दिए गए अनुसार कार्य तर्क भी निर्दिष्ट कर सकते हैं -

grunt.registerTask('dist', ['concat:dist', 'uglify:dist']);

ऊपर कार्य में, उर्फ जिले दोनों चलाता concat और बदसूरत बनाना कार्यों।

मल्टी टास्क

जब भी आप कई कार्य चलाते हैं, तो ग्रंट ग्रंट कॉन्फ़िगरेशन में एक ही नाम की संपत्ति की खोज करता है। इन कार्यों में कई कॉन्फ़िगरेशन हो सकते हैं, जिन्हें मनमाने ढंग से नामित लक्ष्यों का उपयोग करके परिभाषित किया जाएगा ।

जब आप एक कार्य और लक्ष्य दोनों को निर्दिष्ट करते हैं, तो केवल निर्दिष्ट लक्ष्य विन्यास पर कार्रवाई की जाएगी।

grunt concat:foo

उपरोक्त कमांड केवल लक्ष्य foo चलाएगा ।

जब आप केवल एक कार्य निर्दिष्ट करते हैं, तो सभी लक्ष्यों को संसाधित किया जाएगा।

grunt concat

उपरोक्त आदेश के सभी लक्ष्यों से अधिक पुनरावृति जाएगा concat कार्य।

जब आप grunt.task.renameTask के साथ किसी कार्य का नाम बदलते हैं , तो नए कार्य नाम वाली संपत्ति को ग्रंट द्वारा कॉन्फ़िगर ऑब्जेक्ट में खोजा जाता है।

grunt.initConfig({
   log: {
      foo: [1, 2, 3],
      bar: 'Welcome to tutorialspoint',
      sap: true
   }
});

grunt.registerMultiTask('log', 'Log stuff.', function() {
   grunt.log.writeln(this.target + ': ' + this.data);
});

उपरोक्त उदाहरण में, मल्टी टास्क foo लॉग करेगा : 1,2,3 यदि ग्रंट को ग्रन्ट लॉग के माध्यम से चलाया गया था : foo या यह लॉग बार होगा : ग्रुंट लॉग के माध्यम से जब भी चलाया जाए, तो आपका स्वागत है । यह foo लॉग करेगा : 1,2,3 फिर बार: ट्यूटोरियल में आपका स्वागत है तब sap: सच जब ग्रन्ट लॉग के रूप में चलता है ।

मूल कार्य

जब भी आप एक मूल कार्य चलाते हैं, तो ग्रंट कॉन्फ़िगरेशन या वातावरण की खोज नहीं करेगा। इसके बजाय यह कार्य फ़ंक्शन को निर्दिष्ट करता है जो निर्दिष्ट है, फ़ंक्शन तर्क के रूप में निर्दिष्ट किसी भी औपनिवेशिक-पृथक तर्क को पारित करता है।

grunt.registerTask(taskName, [description, ] taskFunction)

निम्न उदाहरण में, कार्य foo लॉग करता है , 123 का परीक्षण अगर ग्रंट को ग्रन्ट फ़ू के माध्यम से निष्पादित किया जाता है : परीक्षण: 123 कमांड। जब भी कार्य को ग्रंट फ़ू के रूप में तर्क के बिना चलाया जाता है , तो कार्य फ़ू, लॉग नहीं होगा ।

grunt.registerTask('foo', 'A simple task to logs stuff.', function(arg1, arg2) {
   if (arguments.length === 0) {
      grunt.log.writeln(this.name + ", no args");
   } else {
      grunt.log.writeln(this.name + ", " + arg1 + " " + arg2);
   }
});

कस्टम कार्य

यदि आप बहु कार्य संरचना का पालन नहीं करना चाहते हैं , तो आप नीचे दिखाए गए अनुसार अपने कस्टम कार्य को परिभाषित कर सकते हैं -

grunt.registerTask('default', 'My "default" task description.', function() {
  grunt.log.writeln('Currently running the "default" task.');
});

जैसा कि नीचे दिखाया गया है, किसी अन्य कार्य के भीतर कार्य चलाना संभव है -

grunt.registerTask('foo', 'My "foo" task.', function() {
   // Enqueue bar and baz tasks, to run after foo completes, in-order.
   grunt.task.run('bar', 'baz');
   // Or:
   grunt.task.run(['bar', 'baz']);
});

आप नीचे दिखाए अनुसार अतुल्यकालिक कार्य भी बना सकते हैं -

grunt.registerTask('asyncfoo', 'My "asyncfoo" task.', function() {
   // Force task into async mode and grab a handle to the done() function.
   var done = this.async();
   // Run some sync stuff.
   grunt.log.writeln('Processing your task..');
   // Run some async stuff.
   setTimeout(function() {
      grunt.log.writeln('Finished!');
      done();
   }, 1000);
});

आप ऐसे कार्य बना सकते हैं जो नीचे दिखाए गए अनुसार उनके नाम और तर्कों तक पहुंच सकते हैं -

grunt.registerTask('foo', 'My task "foo" .', function(a, b) {
   grunt.log.writeln(this.name, a, b);
});

// Usage:
// grunt foo
//   logs: "foo", undefined, undefined
// grunt foo:bar
//   logs: "foo", "bar", undefined
// grunt foo:bar:baz
//   logs: "foo", "bar", "baz"

आप अपना कार्य इस तरह से बना सकते हैं कि, जब भी कोई त्रुटि लॉग की जाए, तो कार्य नीचे दिखाए अनुसार विफल हो सकते हैं -

grunt.registerTask('foo', 'My task "foo" .', function() {
   if (failureOfSomeKind) {
      grunt.log.error('This is an error message.');
   }

   // If this task had errors then fail by returning false
   if (ifErrors) { return false; }

   grunt.log.writeln('This is success message');
});

जब भी कोई काम विफल रहता है, हर निम्नलिखित कार्य समाप्त हो जाएगा, जब तक कि --force निर्दिष्ट किया गया था।

grunt.registerTask('foo', 'My task "foo" .', function() {
   // Fail synchronously.
   return false;
});

grunt.registerTask('bar', 'My task "bar" .', function() {
   var done = this.async();
   setTimeout(function() {
      // Fail asynchronously.
      done(false);
   }, 1000);
});

सफल निष्पादन के लिए कार्य अन्य कार्यों पर निर्भर हो सकते हैं। याद रखें कि grunt.task.requires वास्तव में अन्य कार्य को निष्पादित नहीं करेगा, इसके बजाय यह केवल यह देखने के लिए जांच करेगा कि यह निष्पादित हुआ है या विफल नहीं हुआ है।

grunt.registerTask('foo', 'My task "foo" .', function() {
   return false;
});

grunt.registerTask('bar', 'My task "bar" .', function() {
   // Fail task if foo task failed or never ran.
   grunt.task.requires('foo');
   // This code executes if the foo task executed successfully.
   grunt.log.writeln('Hello, World.. Welcome to Tutorialspoint!..');
});

// Usage:
// grunt foo bar doesn't log, because foo failed to execute.
// **Note: This is an example of space-separated sequential commands,
// (similar to executing two lines of code: `grunt foo` then `grunt bar`)
// grunt bar doesn't log, because foo never ran.

जब भी आवश्यक कॉन्फ़िगरेशन गुण नहीं मिलते हैं, तो कार्य विफल हो सकते हैं।

grunt.registerTask('foo', 'My task "foo" .', function() {
   // Fail task if meta.name config properties is missing
   // Format 1: String 
   grunt.config.requires('meta.name');
   // or Format 2: Array
   grunt.config.requires(['meta', 'name']);
   // Log... conditionally.
   grunt.log.writeln('This only log if meta.name is defined in the config.');
});

कार्य विन्यास गुण तक पहुँच सकते हैं जैसा कि नीचे दिखाया गया है -

grunt.registerTask('foo', 'My task "foo" .', function() {
   // Log the value of the property. Returns null if the property is undefined.
   grunt.log.writeln('The meta.name property is: ' + grunt.config('meta.name'));
   // Also logs the value of the property. Returns null if the property is undefined.
   grunt.log.writeln('The meta.name property is: ' + grunt.config(['meta', 'name']));
});