2016-03-20 3 views
0

Ich verwende Gulp, um meine Webprojekte mit gulp-msbuild zu erstellen. Ich habe jedoch mehrere Webprojekte, die verschiedene Buildparameter haben müssen, um sie im richtigen Ordner zu veröffentlichen.Zugriffswert von src-Parametern vor der Weiterleitung zur nächsten Aufgabe

Hier ist ein Teil meiner gulpfile.js:

gulp.task('publish', function() { 
    var webProjectsPaths = [ 
     '/Project1/Project1.csproj' 
     '/Project2/Project2.csproj' 
    ]; 

    return gulp 
     .src(webProjectsPaths) 
     .pipe(msbuild({ 
      targets: ['WebPublish'], 
      toolsVersion: 14.0, 
      errorOnFail: true, 
      stdout: true, 
      properties: { 
       Configuration: 'Debug', 
       WebPublishMethod: 'FileSystem', 
       DeleteExistingFiles: true, 
       PublishUrl: 'Publish/##csproj file name without the extension##' 
      }, 
     })); 
}); 

Ich möchte, dass jeder Pfad zu .src weitergegeben werden zuzugreifen, bevor es an die msbuild Aufgabe zu senden, so kann ich die PublishUrl Dynamisierung (siehe ##csproj file name without the extension##).

Antwort

1

Wenn Sie diese Schluck-Pipeline in eine Funktion verschieben, kann die Funktion den Pfad bestimmen und die URL im Voraus veröffentlichen.

// returns one stream that builds one project 
function buildWebProject(projectName) { 
    var path = '/' + projectName + '/' + projectName + '.csproj'; 
    var publishUrl = 'Publish/' + projectName; 

    return gulp.src(path) 
    .pipe(msbuild({ 
     targets: ['WebPublish'], 
     toolsVersion: 14.0, 
     errorOnFail: true, 
     stdout: true, 
     properties: { 
     Configuration: 'Debug', 
     WebPublishMethod: 'FileSystem', 
     DeleteExistingFiles: true, 
     PublishUrl: publishUrl 
     } 
    })); 
} 

Dann in Ihrer „veröffentlicht“ schluck Aufgabe, die Verwendung, die einen Stream für jedes Projekt zu machen funktionieren, um die Ströme zu einem einzigen Strom kombinieren, um ein Modul wie merge-stream verwenden und das fusionierte Strom zurück.

var mergeStream = require('merge-stream'); 

gulp.task('publish', function() { 
    var webProjects = [ 
    'Project1', 
    'Project2' 
    ]; 

    var streams = webProjects.map(buildWebProject); 

    return mergeStream(streams); 
}