2016-03-22 44 views
2

Typescript kullanarak bir proje üzerinde çalışıyorum Şu anda Typescript derleme bir sorunla karşı karşıya ve Gulp kullanarak sonucu birleştirmek. Yapmam gerekeni deyişleGulp'i kullanarak ilk önce Typescript'i derleyin, sonra sonucu birleştirin ve ugife edin.

var gulp = require('gulp'); 
var ts = require('gulp-typescript'); 
var concat = require('gulp-concat'); 
var uglify = require('gulp-uglify'); 

gulp.task('default', function() { 
    gulp.src('vendor/**/*.js') 
     // I want to add ts files then combile and concat 
     .gulp.src('src/**/*.ts') 
     .pipe(sourcemaps.init()) 
     .pipe(ts({ 
      noImplicitAny: true, 
      out: 'output.js' 
     })) 
     .pipe(concat('all.js')) 
     .pipe(uglify()); 
     .pipe(sourcemaps.write('/')) 
     .pipe(gulp.dest('./dist/')); 
}); 

geçerli:

  1. harici JavaScript kütüphaneleri alın.
  2. Typescripts'u edinin.
  3. Kaynak harita ile Typescripts derleyin.
  4. Daha önce eklenen JavaScript sonucuna varın.
  5. Onları uglify.
  6. Sorce haritasını oluşturun.
  7. Sonucu bir klasöre kaydedin.

Güncelleme

Ya TypeScriptJavaScript ile sonuca birleştirerek geçmeden önce derlenmiş emin olmak için sadece bir yol.

+0

Sorununuz nedir? 'Output.js' mi? Birini diğerini gerektiren 2 görev oluşturabilirsiniz. – cl3m

+0

Evet, ancak 'JavaScript' –

cevap

3

İki ayrı görevler halinde ayrılarak hakkında coffeescript adam, ama ne daha değilim (test edilmedi altında çözüm ve ./tmp klasörüne geçici çıkış yoktur):

gulp.task('ts', function() { 
    gulp.src('src/**/*.ts') 
     .pipe(ts({ 
      noImplicitAny: true, 
      out: 'output.js' 
     })) 
     .pipe(gulp.dest('./tmp/ts')); 
}); 

gulp.task('default', ['ts'], function() { 
    gulp.src(['vendor/**/*.js', './tmp/ts/output.js']) 
     .pipe(sourcemaps.init()) 
     .pipe(uglify()) 
     .pipe(sourcemaps.write('/')) 
     .pipe(gulp.dest('./dist/')); 
}); 

Kullanımı (içinde senin terminali):

gulp default 

Gulp ilk ts görevi çalışır, sonra da, tamamlandığında, bu default görevi çalışacaktır

Eğer NPM gelen event-stream paketini gerektiriyorsa
+2

ile sonucu birleştirmeye devam etmeden önce 'TypeScript''in derlendiğinden emin olmalıyım. Bu harika ama hata ayıklama sırasında' TypeScript' kaynağının kullanılabilir olduğundan nasıl emin olunur? –

+0

Geçerli iş akışınızda bu nasıl kullanılabilir? – mix3d

+0

Teşekkürler, 'gulp.task' ('default', ['ts'], function() {}) 'sözcüğünü kullandım ve şimdi çalışacak bir şey yaptım. Çok iyi test etmedim ama şimdilik çalışıyor. çok teşekkürler –

4

, o zaman bunu yapabilirsiniz:

var merge = require('event-stream').merge; 

gulp.task('default', function() { 
    var js = gulp.src('vendor/**/*.js'); 

    var ts = gulp.src('src/**/*.ts') 
     .pipe(ts({ 
      noImplicitAny: true, 
      out: 'output.js' 
     })); 

    return merge(js, ts) 
     .pipe(concat('all.js')) 
     .pipe(uglify()) 
     .pipe(gulp.dest('./dist/')); 
}); 

Ben şekle kolay harita çalışmaları kaynak ama eminim nasıl başımın tepesinden bilmiyorum dışarı.

+0

Genel yaklaşımınızı kullandım, ancak akım dizisi paketini kullandım. –