2015-05-20 2 views
3

Я использую gulp, чтобы скомпилировать мои файлы машинописных файлов и создать файл output.js.Как я могу объединить две задачи gulp

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

Вот как выглядит мой текущий файл (см. Ниже). Сначала он запускает задачу машинописного текста, которая создает файл 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' 
]); 

ответ

0

Я использую часы задачи для этого, что имеет кучу 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... 
}); 
0

попытка run-sequence. Ниже приведен простой пример.

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

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