web-dev-qa-db-ja.com

単調なタスク内から単調なタスクを実行するにはどうすればよいですか?

新しいgruntタスクを作成し、その中でgrunt-contrib-concatを使用していくつかのファイルを連結します。

私はドキュメントに目を通しましたが、これを行うことができることを示唆するものは何も見つかりません。それはささいなユースケースのように思えるので、おそらく何かを見ているだけでしょう。

更新1:

また、カスタムタスク内からこのタスクを構成できるようにします。

たとえば、カスタムタスクでファイルのリストを作成します。そのリストを作成したら、それらをconcatタスクに渡します。どうやってやるの?

このようなことができるようになりたいです。

grunt.task.run('concat', { src: ['file1','file2'], dest: 'out.js'})

アップデート2:

私が望むものを実現するには、手動でgruntタスクを構成する必要があります。これが私が欲しかったことを示した例です。

https://github.com/gruntjs/grunt-contrib/issues/118#issuecomment-84821

47
Arron S

タスク内のタスクを手動で構成してから実行する例を次に示します。

https://github.com/gruntjs/grunt-contrib/issues/118#issuecomment-84821

 grunt.registerMultiTask('multicss', 'Minify CSS files in a folder', function() {
        var count = 0;
        grunt.file.expandFiles(this.data).forEach(function(file) {
            var property = 'mincss.css'+count+'.files';
            var value = {};
            value[file] = file;
            grunt.config(property, value);
            grunt.log.writeln("Minifying CSS "+file);
            count++;
        });
        grunt.task.run('mincss');
    });
34
Arron S

から https://github.com/gruntjs/grunt/wiki/Creating-tasks

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

ThronからArronに、彼自身の質問に対する正しい方向性を指摘しました。 grunt.configは、上記の例のキーです。このタスクはbrowserifyタスクのsrcプロパティをオーバーライドします

タスク定義:

  grunt.registerTask('tests', function (spec) {

    if (spec) {
      grunt.config('browserify.tests.src', spec);
    }

    grunt.task.run(['jshint', 'browserify:tests', 'jasmine']);

  }); 

タスク呼び出し:

grunt tests

または

grunt tests:somewhere/specPath.js
11
elmuchacho

あなたが怠feelingだと感じているなら、私はあなたのタスクから実行したいサブタスクに設定を転送するnpmモジュールを公開することになりました:

https://www.npmjs.org/package/extend-grunt-plugin

0
ruyadorno