2016-05-03 14 views
0

Ich habe Probleme mit meiner Gulp-Datei, und ich kann das Problem nicht eingrenzen.gulp-jade erstellt nur eine HTML-Datei, wenn sich mehrere Jade-Dateien im Quellordner befinden

Ich habe eine meiner Gulpfile Setup wie so:

var gulp = require('gulp'), 
    gutil = require('gulp-util'), 
    jade = require('gulp-jade'), 
    stylus = require('gulp-stylus'), 
    minify = require('gulp-minify'), 
    coffee = require('gulp-coffee'), 
    autoprefixer = require('gulp-autoprefixer'), 
    imagemin = require('gulp-imagemin'), 
    cache = require('gulp-cache'), 
    del = require('del'), 
    browserSync = require('browser-sync').create(); 

gulp.task('default', ['clean'], function() { 
    gulp.start('styles', 'markup', 'views', 'scripts', 'controllers', 'images', 'watch', 'serve'); 
}); 

gulp.task('serve', function() { 
    browserSync.init({ 
     server: './public' 
    }); 
    gulp.watch('public/stylesheets/*.css').on('change', browserSync.reload); 
    gulp.watch('public/js/*.js').on('change', browserSync.reload); 
    gulp.watch('public/js/*/*.js').on('change', browserSync.reload); 
    gulp.watch('public/*.html').on('change', browserSync.reload); 
    gulp.watch('public/*/*.html').on('change', browserSync.reload); 
}); 

gulp.task('watch', function() { 
    gulp.watch('src/js/*.coffee', ['scripts']); 
    gulp.watch('src/js/*/*.coffee', ['controllers']); 
    gulp.watch('src/*/*.jade', ['views']); 
    gulp.watch('src/*.jade', ['markup']); 
    gulp.watch('src/stylesheets/*.styl', ['styles']); 
    gulp.watch('src/images/*', ['images']); 
}); 

gulp.task('markup', function() { 
    gulp.src('src/*.jade') 
     .pipe(jade()) 
     .pipe(minify()) 
     .pipe(gulp.dest('public')) 
     .pipe(browserSync.stream()); 
}); 

gulp.task('views', function() { 
    var YOUR_LOCALS = {}; 
    gulp.src('src/views/*.jade') 
     .pipe(jade({ 
     locals: YOUR_LOCALS 
     })) 
     .pipe(minify()) 
     .pipe(gulp.dest('public/views')) 
     .pipe(browserSync.stream()); 
}); 

gulp.task('styles', function() { 
    gulp.src('src/stylesheets/*.styl') 
     .pipe(stylus()) 
     .pipe(autoprefixer()) 
     .pipe(minify()) 
     .pipe(gulp.dest('public/stylesheets')) 
     .pipe(browserSync.stream()); 
}); 

gulp.task('scripts', function() { 
    gulp.src('src/js/*.coffee') 
     .pipe(coffee()) 
     .pipe(minify()) 
     .pipe(gulp.dest('public/js')) 
     .pipe(browserSync.stream()); 

}); 

gulp.task('controllers', function() { 
    gulp.src('src/js/controllers/*.coffee') 
     .pipe(coffee()) 
     .pipe(minify()) 
     .pipe(gulp.dest('public/js/controllers')) 
     .pipe(browserSync.stream()) 
}); 

gulp.task('images', function() { 
    gulp.src('src/images/*') 
     .pipe(cache(imagemin({ 
      optimizationLevel: 3, 
      progressive: true, 
      interlaced: true 
     }))) 
     .pipe(gulp.dest('public/images')) 
     .pipe(browserSync.stream()); 
}); 

gulp.task('clean', function() { 
    return del(['public/js', 'public/stylesheets', 'index.html']) 
}); 

Und ein src/Ansichten Ordner, etwa so:

src 
    └── views 
     ├── login.jade 
     ├── register.jade 
     └── success.jade 

Allerdings, wenn ich laufe ich meine Gulpfile laufen, es baut nur die erste Jade-Datei (login.jade) in HTML, etwa so:

public 
    └── views 
    └── login.html 

Wie kann ich es den Rest dieser Dateien zu bauen bekommen?

Wenn ich die login.jade-Datei aus dem Quellverzeichnis entferne und gulp starte, erstellt sie die nächste Datei in der Zeile, nämlich register.jade. Auch ich habe dieses Problem nicht mit meinem Kaffee Skriptdateien ...

Antwort

1

try-Wechsel:

gulp.watch('src/*/*.jade', ['views']); gulp.watch('src/*.jade', ['markup']);

zu

gulp.watch('src/**/*.jade, ['views']); gulp.watch('src/**/*.jade', ['markup']);

+1

Yep. Sie müssen sicherstellen, dass die Funktion ** glob ** ALLE Dateien und Dateien in Verzeichnissen erfasst! Sie müssen auch sicherstellen, dass Sie ** Ihre Streams ** zurückgeben. ** zurück gulp.src(). pipe() ** – Philip

+1

Danke. Es scheint, dass ich nach dem, was du beschrieben hast, immer noch das gleiche Problem bekam, aber anscheinend war es der Aufruf von 'minify' in der Jade-Pipeline ... Nachdem ich minify aus der Jade-Pipeline entfernt hatte, funktionierte alles. Ich erkannte, dass Jade den Code bereits selbst minimiert und als überflüssig entfernt hatte, und plötzlich funktionierte es. –

Verwandte Themen