Как я могу объединить две задачи глотка

Я использую gulp скомпилировать мои машинописные файлы и создать output.js файл.

Возможно ли иметь одну задачу, которая компилирует файл машинописи и объединяет его с угловыми библиотеками?

Вот как выглядит мой текущий файл (ниже). Сначала он запускает задачу машинописи, которая создает output.js файл, а затем он запускает задачу сценариев, которая объединяет файлы плагинов сценариев и output.js,

'use strict';
var gulp = require('gulp')

var paths = {
  distScriptsDir: '../../Themes/mastter/Scripts',
  srcScriptsPlugins: [
    'node_modules/jquery/dist/jquery.min.js',
    'node_modules/angular/angular.min.js',
    'node_modules/angular-route/angular-route.min.js',
    'node_modules/angular-translate/dist/angular-translate.min.js',
    'node_modules/angular-translate/dist/angular-translate-loader-url/angular-translate-loader-url.min.js',
    'node_modules/angular-bootstrap/dist/ui-bootstrap-tpls.js',
    'Scripts/angular-sticky.min.js',
    'Scripts/dragme.js',
    'Scripts/jasny-bootstrap.min.js',
    'node_modules/lodash/dist/lodash.min.js',
    'node_modules/angular-google-maps/dist/angular-google-maps.min.js'
  ],
  srcScriptsFile: [
    'output.js'
  ]
};


//typescript
gulp.task('typescript', function () {
  var ts = require('gulp-typescript');
  var tsResult = gulp.src( 'all.ts')
    .pipe(ts({
      noImplicitAny: true,
      out: 'output.js'
    }));
  return tsResult.js.pipe(gulp.dest(''));
});

// scripts task
gulp.task('scripts', function () {

  var concat = require('gulp-concat'),
      plumber = require('gulp-plumber'),
      uglify = require('gulp-uglify');

  return gulp.src(paths.srcScriptsPlugins.concat(paths.srcScriptsFile))
    .pipe(plumber({
      errorHandler: function (e) {
          console.log(e.toString());
          this.emit('end');
      }
    }))
  //    .pipe(uglify())
  .pipe(concat('main.js'))
  .pipe(gulp.dest(paths.distScriptsDir));

});

// default task
gulp.task('default', [
 'typescript',
  'scripts'
 ]);

2 ответа

Я использую задачи часов для этого, который имеет кучу gulp.watch внутри него. Один для наблюдения за изменениями.ts и запуска компилятора машинописного текста, который выведет файл js в любое место, а другой gulp.watch который наблюдает за файлами.js и запускает задачу сценария. В этом случае все будет автоматизировано часами, и вам не придется объединять задачу в одну задачу.

gulp.task('watch', function() {
    gulp.watch(['dir/*.ts','otherdir/*.ts',...], ['typescript']);
    gulp.watch(['dir/*.js','otherdir/*.js',...], ['scripts']); //make sure to include the .ts result folder...
});

Попробуйте последовательность выполнения. Ниже приведен простой пример.

gulp.task('task1', function(callback) {
  setTimeout(function() {
    console.log('task1 is done');
    callback()
  }, 1000);
});

gulp.task('task2', function(callback) {
  setTimeout(function() {
    console.log('task2 is done');
    callback()
  }, 2000);
});

gulp.task('tk12', function(callback) {
  return runSequence('task1', 'task2', callback);
});

Другие вопросы по тегам