2015-05-05 2 views
0

Его первый день с gulp - Im, пытающийся использовать gulp-inject, чтобы поместить некоторые файлы сценариев и нефритовые файлы, преобразованные в html, которые существуют в папке приложения, в папку «temp», которая использует веб-сервер для обслуживания html. Я могу сделать эту работу в порядке, если я просто использую статический html, но когда я переключаюсь на нефрит, это работает только после первого запуска gulp (Im угадывает, потому что он все еще обрабатывает galp-jade 'jade()' первым время, так что нет html для инъекций - и поэтому у меня есть этот код (предоставленный мне на полпути через учебник, так что это может быть даже не правильный способ использовать глоток, но в учебнике не используется нефрит, который я предпочитаю)gulp-inject with gulp-jade

var gulp = require('gulp'); 
var server = require('gulp-webserver'); 
var jade = require('gulp-jade'); 
var inject = require('gulp-inject'); 

var paths = { 
    app: 'app/**/*.js', 
    bower: 'bower_components', 
    jade: 'app/*.jade', 
    temp: 'temp', 
    tempVendor: 'temp/vendor', 
    index: 'temp/index.html' 
} 

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


gulp.task('scripts', function(){ 
    gulp.src(paths.jade) 
    .pipe(jade()) 
    .pipe(gulp.dest(paths.temp)); 

var appFiles = gulp.src(paths.app).pipe(gulp.dest(paths.temp)); 
var vendor = gulp.src(mainBower()).pipe(gulp.dest(paths.tempVendor)); 

gulp.src(paths.index) 
    .pipe(inject(appFiles,{relative:true})) 
    .pipe(inject(vendor, {relative:true, name: 'vendorinject'})) 
    .pipe(gulp.dest(paths.temp)); 
}); 

ответ

0

Вы должны разделить вашу задачу глотка в 2-х задания и использовать зависимости глоток, чтобы обеспечить 1 пробеги и заканчиваются перед стартом другого.

var gulp = require('gulp'); 
var server = require('gulp-webserver'); 
var jade = require('gulp-jade'); 
var inject = require('gulp-inject'); 

var paths = { 
    app: 'app/**/*.js', 
    bower: 'bower_components', 
    jade: 'app/*.jade', 
    temp: 'temp', 
    tempVendor: 'temp/vendor', 
    index: 'temp/index.html' 
} 

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

gulp.task('jade', function() { 
    return gulp.src(paths.jade) 
    .pipe(jade()) 
    .pipe(gulp.dest(paths.temp)); 
}); 

gulp.task('scripts', ['jade'], function(){ 
    var appFiles = gulp.src(paths.app).pipe(gulp.dest(paths.temp)); 
    var vendor = gulp.src(mainBower()).pipe(gulp.dest(paths.tempVendor)); 

    gulp.src(paths.index) 
     .pipe(inject(scripts,{relative:true})) 
     .pipe(inject(vendor, {relative:true, name: 'vendorinject'})) 
     .pipe(gulp.dest(paths.temp)); 
}); 

Таким образом, ваши задание скриптов будет выполняться и запускаться только после завершения задания нефрита.

+0

awesome thank you – maehue