Bunu test etmedim, ancak ikisini birleştirirseniz, bunun gibi bir şey olurdu. bağımlılık sırasını yönetmek için çalışma dizisini kullanan varsayılan görevi çalıştırmanız yeterlidir.
var gulp = require('gulp'),
runSequence = require('run-sequence'),
msbuild = require('gulp-msbuild'),
spawn = require("child_process").spawn,
child;
gulp.task('default', function(){
runSequence('clean', 'build', 'powershell');
});
gulp.task('build', ['clean'], function() {
return gulp.src('../../*.sln')
.pipe(msbuild({
toolsVersion: 14.0,
targets: ['Rebuild'],
errorOnFail: true,
properties: {
DeployOnBuild: true,
DeployTarget: 'Package',
PublishProfile: 'Development'
},
maxBuffer: 2048 * 1024,
stderr: true,
stdout: true,
fileLoggerParameters: 'LogFile=Build.log;Append;Verbosity=detailed',
}));
});
gulp.task('powershell', function(callback){
child = spawn("powershell.exe",["c:\\temp\\helloworld.ps1"]);
child.stdout.on("data",function(data){
console.log("Powershell Data: " + data);
});
child.stderr.on("data",function(data){
console.log("Powershell Errors: " + data);
});
child.on("exit",function(){
console.log("Powershell Script finished");
});
child.stdin.end(); //end input
callback();
});
DÜZENLEME
Çağrı parametrelerle bir powershell dosyası
var exec = require('child_process').exec;
gulp.task('powershell', function (callback) {
exec('Powershell.exe -executionpolicy remotesigned -File file.ps1', function(err, stdout, stderr){
console.log(stdout);
callback(err)
});
}); Çözümünüz
Write-Host 'hello'
DÜZENLEME 2
Tamam, bir deneme daha kök
Powershell file.ps1. Paramları/argümanları dosya.ps1'e koyabilir misin?
function Write-Stuff($arg1, $arg2){
Write-Output $arg1;
Write-Output $arg2;
}
Write-Stuff -arg1 "hello" -arg2 "See Ya"
DÜZENLEME
3 yudum görevden params'ı geçirin ::
gulp.task('powershell', function (callback) {
exec("Powershell.exe -executionpolicy remotesigned . .\\file.ps1; Write-Stuff -arg1 'My first param' -arg2 'second one here'" , function(err, stdout, stderr){
console.log(stdout);
callback(err)
});
});
Güncelleme file.ps1
function Write-Stuff([string]$arg1, [string]$arg2){
Write-Output $arg1;
Write-Output $arg2;
}
sadece düğümü kullanabilirsiniz kaldırın. Muhtemel kopya: http://stackoverflow.com/a/10181488/197472 – Barryman9000
@ Barryman9000, derleme görevimden sonra kodu ekleyebilir miyim? –
sadece bir başka görevi çalıştırabildikten sonra powershell/node kodu – Barryman9000