2016-06-08 15 views
1

die folgende dir Struktur gegeben:gulp.dest() führt nicht in Datei-Updates

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

Wir haben eine Gulp Build Kette anstelle, die die gesamte Front-End für uns bauen führt. Zwischenergebnisse werden in das Verzeichnis gen eingegeben und die Endergebnisse werden in das Verzeichnis target eingetragen.

Während der Entwicklung möchten wir das Verzeichnis target überwachen und Änderungen in einem separaten Verzeichnis synchronisieren, das unsere Grails-basierte Anwendung enthält. Wir verwenden das folgende Snippet für diese:

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

    }); 
    } 
}; 

Wenn ich eine Quelldatei aktualisieren, die Build-Kette Feuer und setzt die aktualisierten Ergebnisse im Ziel Verzeichnis. Die Updates werden jedoch NICHT zum Trennen des Grails-Verzeichnisses synchronisiert. Wenn ich die Protokollierung zu überprüfen, ich sehen:

[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 

Es scheint, dass die Datei im Ziel Verzeichnis regeneriert und die Regeneration durch den Zug-Uhr-Paket abgeholt. Aber die Datei wird NICHT von der Funktion gulp.dest() geschrieben ?!

Was ist hier los?

Antwort

0

Nach einigem Versuch und Irrtum scheint es, dass Sie watch() nicht in der Mitte Ihrer Pipeline verwenden können. Stattdessen sollten Sie es als Kopf Ihrer Pipeline verwenden (anstelle von gulp.src()). Durch die Aufteilung der einzelnen Pipeline in zwei separate Pipelines wurde das Problem gelöst.

Also diese (entfernt debug() Aussagen der Kürze halber):

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

dies zu:

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

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