2016-03-20 13 views
0

gulp-msbuild kullanarak web projelerimi oluşturmak için Gulp kullanıyorum. Ancak, doğru klasöre yayınlamak için farklı oluşturma parametrelerine sahip olması gereken birden çok web projem var.Bir sonraki göreve geçmeden önce src parametrelerinin erişim değeri

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

Ben msbuild göreve göndermeden önce her yolu .src geçirilen erişmek istediğiniz yüzden yapabilirsiniz PublishUrl dinamik (##csproj file name without the extension## bakınız):

İşte benim gulpfile.js bir kısmı bu.

cevap

1

Bu nargile boru hattını bir işleve taşırsanız, işlev yolu belirleyebilir ve url'yi önceden yayınlayabilir. senin "yayımlamak" yudum görev, her proje için bir akış yapmak merge-stream gibi bir modülü kullanarak tek bir akışta akışları birleştirmek ve birleştirilmiş akışı döndürmek için işlev kullanımda Sonra

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