2013-11-21 5 views
19

मेरे पास एक ग्रंट बिल्ड फ़ाइल है।ग्रंट कमांड लाइन पैरामीटर

myTask: { 
    options: { 
    configFile: "config/default.js", 
    args: { } 
    }, 
    dev: { 
    configFile: 'config/local.js', 
    options: { args: {} }, 
    }, 
    test: { 
    configFile: 'config/remote.js', 
    options: { args: {} } 
    } 
} 

...

grunt.registerTask('customTask', ['myTask:dev']); 
grunt.registerTask('customTask-Test', ['myTask:test']); 

वर्तमान में, मैं कमांड लाइन से निम्नलिखित चला सकते हैं::

> grunt customTask 

सब कुछ काम करता है अपने निर्माण फ़ाइल एक काम है कि ऐसा दिखाई देता है ठीक। हालांकि, मैं कुछ इस तरह करने की क्षमता जोड़ने की जरूरत:

> grunt customTask --myParam=myValue 

मैं अपने "देव" कार्य लक्ष्य में myParam के मूल्य पर गौर करने की जरूरत है। हालांकि, मैं यह नहीं समझ सकता कि इसे कैसे किया जाए। अगर मैं myTask: dev चला गया है तो मैं सिर्फ अपने पैराम के मूल्य को मुद्रित कर सकता हूं, तो मुझे खुशी होगी। दूसरे शब्दों में, मैं जब

> grunt customTask 

> grunt customTask --myParam=hello 
You entered hello 

> grunt customTask-Test 

> grunt customTask-Test --myParam=hello 

मैं कुछ इस तरह कैसे करते हैं चलाने निम्नलिखित देखना चाहते हैं?

+1

इसका उत्तर पहले दिया गया है: http://stackoverflow.com/questions/17012102/grunt-command-line- तर्क-काम नहीं कर रहे –

उत्तर

34

यह सब grunt.option पृष्ठ में समझाया गया है।

var target = grunt.option('myParam'); 
+2

डिफ़ॉल्ट तर्कों के लिए आप मानक जावास्क्रिप्ट मुहावरे का उपयोग कर सकते हैं: 'grunt.option (' myParam ') || 'DefaultValue''। – Claudiu

3

एक वैकल्पिक तरीका:

आपके मामले में, आप के साथ myParam के परिणाम प्राप्त हो सकते आप जैसे आप एक नियमित नोड अनुप्रयोग में कर सकते हैं, process.argv सरणी का उपयोग कर सकते हैं।

GruntJS, निश्चित रूप से, नोडजेएस पर बनाया गया है।

मैंने अपनी तकनीक को अग्रेषित करने के लिए इस तकनीक का उपयोग किया ताकि मेरी नोड प्रक्रिया में grunt-nodemon कहा जा सके।

1

तुम भी process.argv सरणी का उपयोग कर सकते ते घुरघुराना

var args = process.argv; 
runScript(args[2], args[3]); 

से कमांड लाइन आर्ग पढ़ पहले & दूसरा तर्क node कमान और स्क्रिप्ट नाम हैं।

> grunt cssmin --target=my_module 

Gruntfile:

execute: { 
    target: { 
     options: { 
     args : [arg1, arg2] 
     }, 
     src: ['script.js'] 
    } 
} 

grunt-execute

+0

यह काम करने के लिए 'initConfig' में मेरा घड़ी कार्य करने के लिए यह एक शानदार तरीका था कि किस कार्य को बुलाया जा रहा था। मैं कार्य के आधार पर अपने 'घड़ी' कार्य में जाने के लिए एक चर सेट करना चाहता था, लेकिन 'grunt.registerTask' चलाने से पहले,' grunt.task.current.name' में कुछ भी नहीं है। इसे पोस्ट करने के लिए धन्यवाद! – Groovetrain

+0

आपका स्वागत है, मुझे खुशी है कि इस टिप्पणी के साथ किसी को भी मदद मिली है –

2

का उपयोग कर रहा उपयोग करते हैं, जहां मैं मॉड्यूल जहां मैं चाहता हूँ मेरी css.min इस कमांड लाइन के माध्यम से बनाया जा करने के लिए पारित कर सकते हैं का एक उदाहरण बना दिया। जेएस

module.exports = function(grunt) {  
var module = grunt.option('target'); //get value of target, my_module 
var cssminPath = 'assets/' + module + '/css/all.css'; 

grunt.initConfig({ 
    pkg: grunt.file.readJSON('package.json'), 

    cssmin:{ 
     css: { 
      files: [{ 
        src: [ 
         'bower_components/bootstrap/dist/css/bootstrap.min.css', 
        ], 
        dest: cssminPath 
       }] 
     } 
    }, 
    }); 
    grunt.loadNpmTasks('grunt-contrib-cssmin'); 
    grunt.registerTask('default', ['cssmin']); 
} 
संबंधित मुद्दे