2013-05-23 3 views
23

私のプロジェクトのルートにGruntfileがあります。また、アプリケーション/コンポーネント/ jqueryディレクトリにBower経由でjQueryをインストールしました。別のGruntfileでgruntfileを実行する

私のGruntfileの一環として、jQuery Gruntfileでいくつかのコマンドを実行して、ライブラリのカスタムバージョンをビルドします。

私のGruntfileはどうすれば入手できますか?

答えて

29

あなたがしたいフォルダにspawns gruntという単純なタスクを作成することができます

grunt.registerTask('run-grunt', function() { 
    var done = this.async(); 
    grunt.util.spawn({ 
     grunt: true, 
     args: [''], 
     opts: { 
      cwd: 'app/components/jquery' 
     } 
    }, function (err, result, code) { 
     done(); 
    }); 
}); 
+2

これはほとんどのために必要とされるであろうどのような....作品タスクの出力を表示します。私は、タスクカルマを持っているとしましょう:私のユニットテストを 'watch:true'で実行するユニット。私はそれを実行し、画面上の出力を見ることができるようにしたいと思います。 –

0

それがうまくいけば分かりませんが、試してみてください。あなたのjQuery Gruntfileは "module.exports"を介してエクスポートされます。つまり、コード内でそれを要求して使用することができます。

var jQueryGrunt = require('path-to-jquery-gruntfile'); 
jQueryGrunt.task.run(['your-task-you-want-to-run']); 

はそれが動作するかどうかを聞くのは興味深いだろう...

16

は、コンソール出力を取得したい場合@ Sindreの答えに基づいて構築してください。あなたがしなければならないのは、コンソールログresult.stdoutだけです。

grunt.registerTask('run-grunt', function() { 
    var cb = this.async(); 
    grunt.util.spawn({ 
     grunt: true, 
     args: ['clean', 'copy:fonts'], 
     opts: { 
      cwd: 'bower_components/bootstrap' 
     } 
    }, function(error, result, code) { 
     console.log(result.stdout); 
     cb(); 
    }); 
}); 
+1

もちろん、出力はバッファされていますが、完璧に動作します。 – LeeGee

11

Sindreさんとスティーブンの答え@ @に基づいて、我々はまた、バッファリングされずに「リアルタイムで」コンソール出力を得ることができます。

grunt.registerTask('run-grunt', function() { 
    var cb = this.async(); 
    var child = grunt.util.spawn({ 
     grunt: true, 
     args: ['clean', 'copy:fonts'], 
     opts: { 
      cwd: 'bower_components/bootstrap' 
     } 
    }, function(error, result, code) { 
     cb(); 
    }); 

    child.stdout.pipe(process.stdout); 
    child.stderr.pipe(process.stderr); 
}); 
+0

Visual Studioのタスクランナーエクスプローラーでもうまくいきます。 これで、プロジェクトのルートにあるgruntfileを使ってBootstrap gruntfileからタスクを実行できます(これはTask Runner Explorerに必要です) – ArieKanarie

関連する問題