如何在Grunt中的循环内执行shell命令?

时间:2016-08-09 17:03:52

标签: node.js shell gruntjs exec

我有一个包含多个子文件夹的app文件夹。我循环浏览这些文件夹并尝试为每个文件夹运行shell命令。这就是我到目前为止所做的:

grunt.registerTask('deploy', function() {

    var done = this.async();
    var exec = require('child_process').exec;

    // Start deployment
    grunt.log.write('Starting deployment...').ok();

    // Read all subdirectories from the app folder
    grunt.file.expand("./app/*").forEach(function (dir) {

        // Get folder name
        var functionName = dir.split('/')[2];

        exec('echo ' + functionName, {
            cwd: dir
        }, function(error, stdout, stderr) {
            grunt.log.ok(functionName+' deployed.');
            done();
        });

    });

});

我期望在我的终端中打印出每个文件夹名称,但我得到的只是exec函数中的回调,如下所示:

Running "deploy" task
Starting deployment...OK
>> testA deployed.
>> testB deployed.

我不确定我做错了什么。

1 个答案:

答案 0 :(得分:0)

命令的输出可以在传递给回调的stdout变量中找到。它不会自动打印终端。