2013-03-08 4 views
47

Я создал новую задачу grunt, и внутри нее я хочу использовать grunt-contrib-concat, чтобы объединить несколько файлов вместе.Как я могу запустить задание grunt из задачи grunt?

Я просмотрел документы, но я не нахожу ничего, что намекало на возможность этого. Это кажется тривиальным прецедентом, поэтому я, вероятно, просто что-то искал.

Update 1:

Я также хочу, чтобы иметь возможность настроить эту задачу из моей пользовательской задачи.

Например, я создаю список файлов в своей настраиваемой задаче. После того, как у меня есть этот список, я хочу передать их в задание concat. Как я могу это сделать?

Я хотел был бы сделать что-то подобное.

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

Update 2:

Чтобы достичь того, чего я хочу, я должен вручную настроить задачу хрюкать. Вот пример, который показал мне то, что я хотел.

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

+9

Ссылка github выше мертва. – moliveira

+0

Вы можете найти это полезным: http://stackoverflow.com/questions/28847471/grunt-how-to-build-the-files-object-dynamically/29244332#29244332 – almeidap

ответ

25

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

См. Мое редактирование. Я добавил, что я хочу использовать concat из своей задачи. –

+1

Работает ли это, если задача нуждается в настройках? – phtrivier

+1

, вероятно, вам нужно настроить задачи, как в ответе @ArronS. –

34

Вот пример ручной настройки задачи в рамках задачи, а затем запустить его.

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

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

Thx к Arron, что указал нам в правильном направлении к своему вопросу. Файл grunt.config является ключом из приведенного выше примера. Эта задача будет переопределить Src свойство browserify задачи

определение Задача:

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 
0

Если вы чувствуете себя ленивым я заканчивал опубликовать модуль npm, который перенаправляет конфиги из вашей задачи в подзадачу, которую вы хотите запустить:

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

Смежные вопросы