2016-03-20 7 views
0

gulpを使用してgulp-msbuildを使用してWebプロジェクトを構築しています。しかし、私は正しいフォルダに公開するために異なるビルドパラメータを持つ必要がある複数のWebプロジェクトがあります。ここで次のタスクにパイプする前のsrcパラメータへのアクセス

は私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##' 
      }, 
     })); 
}); 

私はPublishUrlダイナミック(##csproj file name without the extension##を参照)を作ることができるようにmsbuildタスクに送信する前.srcに渡される各パスにアクセスしたいです。

答えて

1

関数にその派生パイプラインを移動すると、関数は事前にURLをパースしてパブリッシュできます。あなたの「公開」一気タスク、各プロジェクトのためのストリームを作るmerge-streamのようなモジュールを使用して単一のストリームにストリームを組み合わせて、マージされたストリームを返すように機能し、使用中のその後

// 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 
     } 
    })); 
} 

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

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

    var streams = webProjects.map(buildWebProject); 

    return mergeStream(streams); 
} 
関連する問題