2013-11-21 71 views
19

我有一個Grunt構建文件。我的構建文件有類似以下任務:Grunt命令行參數

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 

我需要看看我的「dev」任務目標中myParam的值。但是,我無法弄清楚如何去做。 如果我可以在運行myTask:dev時打印出myParam的值,我會很高興。換句話說, 我想看看下面的運行

> 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- arguments-not-working –

回答

34

這在grunt.option頁面中有所解釋。

在你的情況,你可以得到的myParam與價值:

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

對於默認參數,您可以使用標準的JavaScript語法:'grunt.option('myParam')|| 「defaultValue''。 – Claudiu

3

的另一種方法:你可以使用process.argv陣列,就像你可以在一個普通節點的應用程序。

GruntJS當然是建立在NodeJS上的。

我使用這種技術來將我的Grunt命令行參數轉發到我的Node進程,由grunt-nodemon調用。

1

您還可以使用process.argv陣列TE從咕嚕

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

讀取命令行參數的第一&第二個參數是node命令和腳本的名稱。

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

使用grunt-execute

+0

對於我來說,在initConfig中執行我的監視任務的好方法取決於調用哪個任務。我想根據任務的內容設置一個變量以傳入我的'watch'任務,但是在運行'grunt.registerTask'之前,'grunt.task.current.name'中沒有任何內容。感謝張貼這! – Groovetrain

+0

不客氣,我很樂意幫助別人對此評論 –

2

我利用,其中i可以通過其中i希望通過此命令行被創建我css.min的模塊的一個例子:

> grunt cssmin --target=my_module 

Gruntfile。 js

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