我已经创建了一个新的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
答案 0 :(得分: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');
});
答案 1 :(得分:27)
来自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']);
});
答案 2 :(得分:11)
对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
答案 3 :(得分:0)
如果你感到懒惰,我最后发布了一个npm模块,它将你的任务中的配置转发到你想要运行的子任务中:
答案 4 :(得分:0)
grunt.registerTask('asyncfoo', 'My "asyncfoo" task.', function() {
var done = this.async();
// Run some sync stuff.
grunt.log.writeln('Processing task...');
var versions = Object.keys(versionConf);
setTimeout(function() {
versions.forEach(function(version) {
console.info(version);
//process.env.version = version;
grunt.config('port', versionConf[version].port);
grunt.task.run('test-perf');
})
done();
}, 1000);
});
我想根据版本每次运行带有 diff 端口的 test-perf。