我要么把它抹掉,要么它就会变得更复杂。
我试图从Grunt任务运行grunt-init,如下所示:
grunt.registerTask('init', 'Scaffold various artifacts', function(param) {
// analyze `param` and pass execution to `grunt-init`
// run `grunt-init path/to/some/template/based/on/param/value`
});当然,param的分析部分并不是问题。它运行的是grunt-init。
在与下面的尝试相同的文件夹中直接运行grunt-init 的运行良好的。
我尝试了以下方法(path to template为代码的短促而内联),但都没有效果:
咕噜壳
shell: {
init: {
options: {
stdout: true,
callback: function(err, stdout, stderr, cb) {
...
}
},
command: 'grunt-init path/to/some/template/based/on/param/value'
}
}然后:
grunt.registerTask('init', 'Scaffold various artifacts', function(param) {
grunt.task.run(['shell:init']);
});在命令行中:
grunt init或直接从命令行:
grunt shell:init咕噜声
exec: {
init: {
cmd: 'grunt-init path/to/some/template/based/on/param/value',
callback: function() {
...
}
}
}然后:
grunt.registerTask('init', 'Scaffold various artifacts', function(param) {
grunt.task.run(['exec:init']);
});在命令行中:
grunt init或直接从命令行:
grunt exec:init节点exec
grunt.registerTask('init', 'Scaffold various artifacts', function(param) {
var exec = require('child_process').exec;
exec('grunt-init path/to/some/template/based/on/param/value', function(err, stdout, stderr) {
...
});
});在命令行中:
grunt initNothing.
有各种尝试,其中最好的方法是打印grunt-init提示符的第一行:
Running "init" task就是这样。
,我错过了什么?我应该以某种方式连接stdout 吗?
发布于 2013-09-20 05:33:28
我想我找到了一条路,但我觉得不太好。我会回答这个问题,但是,,,请也给你。
这可以用咕噜-平行来完成
咕噜-平行
其中任务使用以下方法定义:
parallel: {
init: {
options: {
stream: true
},
tasks: [
{cmd: 'grunt-init'}
]
}
}init的任务是:
grunt.registerTask('init', 'Scaffold various artifacts', function(param) {
// calculate path based on `param`
...
grunt.config.set('parallel.init.tasks.0.args', ['path/to/some/template/based/on/param/value']);
grunt.task.run(['parallel:init']);
});然后,在命令行中运行以下命令:
grunt init:<some param indicating template type or similar>正确运行grunt-init。
发布于 2014-01-15 09:15:01
使用grunt.util.spawn创建子进程。您可以将其设置为异步,并将stdio设置为“inherit”,这样就可以回答任何模板提示。另外,您应该设置一个cwd,否则它会试图覆盖您现有的Gruntfile.js!
grunt.registerTask('init', 'Scaffold various artifacts', function(grunt_init_template) {
var done = this.async();
grunt.util.spawn({
cmd: 'grunt-init',
args: [grunt_init_template],
opts: {
stdio: 'inherit',
cwd: 'new_project_dir',
}
}, function (err, result, code) {
done();
});
});https://stackoverflow.com/questions/18909159
复制相似问题