gpt4 book ai didi

gruntjs - 如何从 Grunt 任务运行 grunt-init?

转载 作者:行者123 更新时间:2023-12-02 00:05:00 25 4
gpt4 key购买 nike

我要么脑子一片空白,要么本该更复杂。

我正在尝试从 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 效果很好

我已经尝试了以下方法(由于代码短小,模板路径被内联),都无济于事:

咕噜壳

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 init

没有。

有各种尝试,其中最好的是打印 grunt-init 提示符的第一行:

Running "init" task

就是这样。

我错过了什么?我应该以某种方式连接 stdout 吗?

最佳答案

grunt.util.spawn 创建一个子进程.您可以使其异步并将 stdio 设置为“继承”,以便可以回答任何模板提示。此外,您应该设置一个 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();
});
});

关于gruntjs - 如何从 Grunt 任务运行 grunt-init?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18909159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com