2016-06-08 4 views
1

Учитывая следующую структуру: режgulp.dest() не приводит к обновлению файлов

<project> 
|- src 
|- gen 
|- target 

У нас есть Глоток сборка цепи в месте, которое выполняет весь передний конец строить для нас. Промежуточные результаты помещаются в каталог gen, а конечные результаты помещаются в каталог .

Во время разработки мы хотим отслеживать каталог target и синхронизировать изменения в отдельный каталог, содержащий наше приложение на основе Grails. Мы используем следующий фрагмент кода для этого:

'use strict'; 

var debug   = require('gulp-debug'); 
var config  = require('../config'); 
var gulp   = require('gulp'); 
var watch   = require('gulp-watch'); 

module.exports = { 
    //command: 'prod', 
    //desc: 'Builds "production" version', 
    run: function(){ 
    gulp.task('watch', ['server'], function() { 

     // Copy files from the 'target' directory to the framework directory while developing 
     var source = config.dist.root, 
      destination = config.fw.root; 

     gulp.src(source + '/**/*', {base: source}) 
      .pipe(debug({title: 'unicorn:'})) 
      .pipe(watch(source + '/**/*', {base: source})) 
      .pipe(debug({title: 'minotaur:'})) 
      .pipe(gulp.dest(destination)) 
      .pipe(debug({title: 'centaur:'})); 

    }); 
    } 
}; 

Когда я обновить исходный файл, цепь пожаров сборки и помещает обновленные результаты в целевой каталога. Но обновления НЕ синхронизируются для разделения каталога Grails. Когда я проверяю протоколирование, я вижу это:

[14:29:42] Rebundle... 
[14:29:42] minotaur: target\web-app\portal\js\appLoader.js 
[14:29:43] minotaur: target\web-app\portal\js\appLoader.js 

кажется, что файл регенерируется в целевой каталога и регенерацию подобран пакет Глоток-часовой. Но файл НЕ написан функцией gulp.dest() ?!

Что здесь может быть?

ответ

0

После некоторых проб и ошибок, кажется, что вы не можете использовать watch() в середине вашего конвейера. Вместо этого вы должны использовать его в качестве главы вашего конвейера (вместо gulp.src()). Разделение единого трубопровода на два отдельных трубопровода решило проблему.

Так это (удаленные debug() заявления для краткости):

gulp.src(source + '/**/*', {base: source}) 
     .pipe(watch(source + '/**/*', {base: source})) 
     .pipe(gulp.dest(destination)); 

становится этим:

gulp.src(source + '/**/*', {base: source}) 
     .pipe(gulp.dest(destination)); 

watch(source + '/**/*', {base: source}) 
     .pipe(gulp.dest(destination)); 
Смежные вопросы