2016-06-01 6 views
0

Ich benutze Schluck für das Generieren von CSS von LESS. Es hat perfekt funktioniert, aber jetzt scheint das Skript die LESS-Dateien zu ignorieren. Hierschlucklose macht keine CSS-Dateien mehr

ist mein gulpfile.js (es ist auf jeden Fall richtig, da ich es nicht in der letzten Zeit ändern haben):

// Include Gulp plugins 
var gulp = require('gulp'), 
    less = require('gulp-less'), 
    watch = require('gulp-watch'), 
    prefix = require('gulp-autoprefixer'), 
    plumber = require('gulp-plumber'), 
    filter = require('gulp-filter'), 
    rename = require('gulp-rename'), 
    path = require('path') 
; 
// Compile LESS to CSS 
gulp.task('build-less', function() { 
    const fileFilter = filter(['*', '!mixins.less', '!variables.less']); 
    gulp.src('./public/less/*.less') // path to less file 
     .pipe(fileFilter) 
     .pipe(plumber()) 
     .pipe(less()) 
     .pipe(gulp.dest('./public/css/')) // path to css directory 
    ; 
}); 
// Get vendors' code 
gulp.task('build-vendors', function() { 
    gulp.src(['./public/components/bootstrap/less/theme.less', './public/components/bootstrap/less/bootstrap.less']) // path to less file 
     .pipe(plumber()) 
     .pipe(less()) 
     .pipe(rename(function (path) { 
      //rename all files except 'bootstrap.css' 
      if (path.basename + path.extname !== 'bootstrap.css') { 
       path.basename = 'bootstrap-' + path.basename; 
      } 
     })) 
     .pipe(gulp.dest('./public/css')) // path to css directory 
    ; 
}); 
// Run the build process 
gulp.task('run', ['build-less', 'build-vendors']); 
// Watch all LESS files, then run build-less 
gulp.task('watch', function() { 
    gulp.watch('public/less/*.less', ['run']) 
}); 
// Default will run the 'entry' task 
gulp.task('default', ['watch', 'run']); 

Und hier ist der Ruf und die Ausgabe:

$ gulp 
[11:21:03] Using gulpfile /var/www/path/to/project/gulpfile.js 
[11:21:03] Starting 'watch'... 
[11:21:03] Finished 'watch' after 21 ms 
[11:21:03] Starting 'build-less'... 
[11:21:03] Finished 'build-less' after 13 ms 
[11:21:03] Starting 'build-vendors'... 
[11:21:03] Finished 'build-vendors' after 4.65 ms 
[11:21:03] Starting 'run'... 
[11:21:03] Finished 'run' after 5.37 μs 
[11:21:03] Starting 'default'... 
[11:21:03] Finished 'default' after 6.05 μs 

Die whatch funktioniert auch richtig - wenn ich meine LESS-Dateien bearbeiten ich eine Ausgabe wie diese:

[11:22:22] Starting 'build-less'... 
[11:22:22] Finished 'build-less' after 1.96 ms 
[11:22:22] Starting 'build-vendors'... 
[11:22:22] Finished 'build-vendors' after 1.78 ms 
[11:22:22] Starting 'run'... 
[11:22:22] Finished 'run' after 5.08 μs 

Ich habe auch versucht die build-less direkt auszuführen:

$ gulp build-less 
[11:24:06] Using gulpfile /var/www/path/to/project/gulpfile.js 
[11:24:06] Starting 'build-less'... 
[11:24:06] Finished 'build-less' after 13 ms 

keine Fehler, aber auch keine Änderungen an den CSS-Dateien.

Was könnte schief gehen und wie man es beheben?

Antwort

1

gulp-filter verwendet multimatch Dateipfade gegen Globbing Muster zu entsprechen. Die Dokumentation für multimatchhas this to say about *:

* eine beliebige Anzahl von Zeichen, aber nicht /

Da Sie versuchen, Dateien mit Pfaden passen wie public/less/foo.less (die eine / enthalten) mit einem einzigen Stern * funktioniert nicht. Sie müssen zwei Sterne verwenden **:

gulp.task('build-less', function() { 
    const fileFilter = filter(['**/*', '!**/mixins.less', '!**/variables.less']); 
    gulp.src('./public/less/*.less') // path to less file 
    .pipe(fileFilter) 
    .pipe(plumber()) 
    .pipe(less()) 
    .pipe(gulp.dest('./public/css/')); // path to css directory 
}); 
+0

Vielen Dank! Es funktioniert wieder! Aber warum hat es früher funktioniert? Ich habe es tatsächlich mehrere Monate mit einer falschen Filterkonfiguration verwendet und hatte absolut keine Probleme damit. Irgendeine Idee? – automatix

+1

Vor einer Weile gab es [eine rückwärtskompatible Änderung] (https://github.com/sindresorhus/gulp-filter/commit/b0728ab9b667f04493fad10cc32d9135f1ead997), die gemacht wurde, wie 'gulp-filter' Dateipfade abgleicht. Ich nehme an, dass das das Problem verursacht hat. –