Как я могу запустить задание для ворчания из задачи?
Я создал новую задачу 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-8482130
Ответы
Ответ 1
Здесь приведен пример ручной настройки задачи в задаче, а затем ее запуска.
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');
});
Ответ 2
От 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']);
});
Ответ 3
спасибо to Arron, который указал нам в правильном направлении на его собственный вопрос. Файл grunt.config является ключом из приведенного выше примера. Эта задача переопределит свойство 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
Ответ 4
Если вы чувствуете себя ленивым, я закончил публикацию модуля npm, который перенаправляет конфиги из вашей задачи в подзадачу, которую вы хотите запустить:
https://www.npmjs.org/package/extend-grunt-plugin