我的项目根目录中有一个Gruntfile。我还通过Bower在app / components / jquery目录中安装了jQuery。
作为我的Gruntfile的一部分,我想在jQuery Gruntfile上运行一些命令来构建库的自定义版本。
如何从我的Grunt文件中获取?
答案 0 :(得分: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();
});
});
答案 1 :(得分: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();
});
});
答案 2 :(得分:11)
根据@ Sindre和@ Stephen的回答,我们还可以“实时”获取控制台输出而不进行缓冲:
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);
});
答案 3 :(得分:0)
不知道这是否有效,但你可以尝试一下。你的jQuery Gruntfile是通过“module.exports”导出的。这应该意味着,您可以在代码中使用它并使用它。
var jQueryGrunt = require('path-to-jquery-gruntfile');
jQueryGrunt.task.run(['your-task-you-want-to-run']);
如果能有效,会很有趣......