回答:
あるいは、これを助けるためにgruntプラグインをロードすることもできます:
shell: {
make_directory: {
command: 'mkdir test'
}
}
またはgrunt-execの例:
exec: {
remove_logs: {
command: 'rm -f *.log'
},
list_files: {
command: 'ls -l **',
stdout: true
},
echo_grunt_version: {
command: function(grunt) { return 'echo ' + grunt.version; },
stdout: true
}
}
grunt-shell
Windows + Cygwinで作業することができませんでしたが、で運が良かったgrunt-exec
です。
"exec:cmd1", "exec:cmd2"
、同期的に注文することもできます。
チェックアウトgrunt.util.spawn
:
grunt.util.spawn({
cmd: 'rm',
args: ['-rf', '/tmp'],
}, function done() {
grunt.log.ok('/tmp deleted');
});
opts: {stdio: 'inherit'},
、あなたは、コマンドの出力を参照することができます
grunt-legacy-util
プラグインが必要です。require('child_process').spawn()
代わりに使用することをお勧めします。
解決策を見つけたので、共有したいと思います。
ノードの下でgruntを使用しているので、ターミナルコマンドを呼び出すには、「child_process」モジュールが必要です。
例えば、
var myTerminal = require("child_process").exec,
commandToBeExecuted = "sh myCommand.sh";
myTerminal(commandToBeExecuted, function(error, stdout, stderr) {
if (!error) {
//do something
}
});
sh
以前sh mayCommand.sh
に使用しているように、Windowsで機能するかどうかは
最新のgruntバージョン(この記事の執筆時点では0.4.0rc7)を使用している場合、grunt-execとgrunt-shellの両方が失敗します(最新のgruntを処理するように更新されていないようです)。一方、child_processのexecは非同期であり、面倒です。
最終的にはJake Trentのソリューションを使用し、プロジェクトの開発依存関係としてshelljsを追加したので、簡単かつ同期的にテストを実行できました。
var shell = require('shelljs');
...
grunt.registerTask('jquery', "download jquery bundle", function() {
shell.exec('wget http://jqueryui.com/download/jquery-ui-1.7.3.custom.zip');
});
grunt-shell
と正常に動作しているgrunt v0.4.5
Windowsの下に
Guysはchild_processを指しますが、使用しようとしているexecSyncを出力を確認するために..
grunt.registerTask('test', '', function () {
var exec = require('child_process').execSync;
var result = exec("phpunit -c phpunit.xml", { encoding: 'utf8' });
grunt.log.writeln(result);
});