2013-05-15 10 views
15

テスト用にnode.jsコードでgruntタスクを作成して実行したいと思います。コマンドラインを使用せずにapiを使って粗いタスクを実行する

var foo = function() { 
    var grunt = require("grunt"); 

    var options = {"blahblah": null} // ...creating dynamic grunt options, such as concat and jshint 
    grunt.initConfig(options); 
    grunt.registerTask('default', [/*grunt subtasks*/]); 
} 

しかし、これは機能しません。グランはどんな仕事もしていないようです。私は、コマンドラインなしでgruntタスクを外部で実行するためのAPIがあるとはほとんど確信していますが、それを行う方法はわかりません。

これを行う方法はありますか?

答えて

20

できます。私は現在、Gruntがコマンドラインツールであるので、なぜ誰かがこれを行う必要があるのか​​分かりません。 警告:この方法でGruntを使用することはお勧めしません。しかし、ここにある:

var grunt = require('grunt'); 

// hack to avoid loading a Gruntfile 
// You can skip this and just use a Gruntfile instead 
grunt.task.init = function() {}; 

// Init config 
grunt.initConfig({ 
    jshint: { 
    all: ['index.js'] 
    } 
}); 

// Register your own tasks 
grunt.registerTask('mytask', function() { 
    grunt.log.write('Ran my task.'); 
}); 

// Load tasks from npm 
grunt.loadNpmTasks('grunt-contrib-jshint'); 

// Finally run the tasks, with options and a callback when we're done 
grunt.tasks(['mytask', 'jshint'], {}, function() { 
    grunt.log.ok('Done running tasks.'); 
}); 
+1

それは動作します。どうもありがとうございました。私はいくつかのWebベースのテスト環境を設定するためにGruntを動的に実行したいと思っていました。それを達成するために、私はGruntをnodeJSコードで実行するか、またはexec()のようなものを使ってGruntのCLIコマンドを作成する必要がありました。前者はもっと自然だったと思った。 – Kivol

+6

私は通常、そのようなテストのために 'grunt.util.spawn({grunt:true、args:['taskname']}、function(){})'を使います。 Gruntは、ユーザーがGruntをどのように実行するかをより詳しく示します。 –

+0

ありがとう!私はそのようにしよう。 – Kivol

13

あなたがこれを実行したとイサキの人々によって維持プロジェクトであるgrunt-cliを見て、コードからイサキを実行する方法のインスピレーションを得ることができます。

コードからgrunt-cli/bin/gruntにGruntが起動し、その詳細についてはgrunt/lib/grunt/cli.jsで読むことができます。

私はこのような民間のプロジェクトでそれを使用

:ここgrunt.option("extra")

を実行するための別の方法を説明しbloggpostであるように、キー「エクストラ」はgruntfile内部から利用できるようになります

var grunt = require("grunt"); 
grunt.cli({ 
    gruntfile: __dirname + "/path/to/someGruntfile.js", 
    extra: {key: "value"} 
}); 

面倒な仕事:http://andrewduthie.com/2014/01/14/running-grunt-tasks-without-grunt-cli/

+0

興味深いblogpostです。ここに更新されたリンクがあります:http://andrewduthie.com/2014/01/14/running-grunt-tasks-without-grunt-cli –

関連する問題