0
私は複数のサブフォルダを持つappフォルダを持っています。これらのフォルダをループして、各フォルダのシェルコマンドを実行しようとしています。これは私がこれまで持っているものである:私は私の端末に期待する何Gruntのループ内でシェルコマンドを実行するには?
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.
私は何が間違っているのか分かりません。
これは意味がありますが、まだ正しく動作していません。私は3つのフォルダを持っている場合、ときどきそれらのうちの2つだけが、グラントが終了する前に処理されるので、何かが非同期部分にも間違っています。 – passatgt
コマンドコールバックで 'done()'を呼び出すと、最初のタスクの後にタスクが完了したとみなされます。 –