2016-03-22 2 views
2

Я работаю над проектом, используя Typescript. В настоящее время мне грозит проблема компиляции Typescript, а затем объединяйте результат, используя Gulp.Использование Gulp, как сначала скомпилировать машинописный текст, затем объединить результат и угадать его?

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

В словах, что мне нужно сделать, это:

  1. Получить внешние JavaScript библиотеки.
  2. Получить Typescripts.
  3. Компиляция Typescripts с исходной картой.
  4. Согласуйте результат с ранее добавленным JavaScript.
  5. Углить их.
  6. Создайте карту sorce.
  7. Сохраните результат в какой-либо папке.

Update

Или просто способ, чтобы убедиться, что TypeScript составляется перед тем продолжением конкатенации результат с JavaScript.

+0

В чем проблема? Это 'output.js'? Вы могли бы создать 2 задания, один из которых потребует другого. – cl3m

+0

Да, но мне нужно убедиться, что 'TypeScript' скомпилирован, прежде чем приступать к конкатенации результата с помощью' JavaScript' –

ответ

3

Я больше coffeescript парень, но как насчет разделения на две отдельные задачи (раствор ниже не проверял, и есть временный выход в папку ./tmp):

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

Использование (в ваш терминал):

gulp default 

Глоток будет первым запустить ts задачу, а затем, после его завершения, он будет работать default задачу

+2

. Замечательно, но как убедиться, что источник 'TypeScript' доступен при отладке? –

+0

Как это доступно вам в текущем рабочем процессе? – mix3d

+0

Спасибо, я использовал подсказку 'gulp.task ('default', ['ts'], function() {})', и теперь я сделал что-то, что сработает. Я не очень хорошо его тестировал, но сейчас это работает. так спасибо большое –

4

Если требуется event-stream пакета из НПХ, то вы можете сделать это:

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

Я не знаю, с верхней частью моей головы, как на источник карты работы, но я уверен, что это легко понять вне.

+0

Я использовал ваш общий подход, но вместо этого использовал пакет потоковой серии. –

Смежные вопросы