2014-09-10 8 views
23

Ich habe eine Variable wieCSS minify und benennen Sie mit schluck

var files = { 
    'foo.css': 'foo.min.css', 
    'bar.css': 'bar.min.css', 
}; 

Was ich schluck will für mich zu tun ist, um minify die Dateien und dann rename für mich.

Aber die Aufgaben derzeit geschrieben als (für eine Datei)

gulp.task('minify', function() { 
    gulp.src('foo.css') 
     .pipe(minify({keepBreaks: true})) 
     .pipe(concat('foo.min.css')) 
     .pipe(gulp.dest('./')) 
}); 

Wie neu zu schreiben, so dass es funktioniert mit meinem Variable files oben definiert?

+0

Meinten Sie getan haben, dass Sie versuchen, den Profi zu iterieren Eigenschaften Ihres Objekts "Dateien"? (PS: Gibt es einen Grund, warum es ein Objekt ist? Ich könnte erwartet haben, dass dies ein Array ist, basierend auf seinem Namen ..?) – ne1410s

+0

Nur ein FYI 'gulp-minify-css' wurde [veraltet] (https://www.npmjs.com/package/gulp-minify-css) zugunsten von [gulp-clean-css] (https://github.com/scniro/gulp-clean-css) – scniro

Antwort

44

Sie sollten in der Lage sein, alle Dateien, die Sie für Ihre Quelle benötigen, mit einem Glob auszuwählen, anstatt sie in einem Objekt zu definieren, was Ihre Aufgabe vereinfachen sollte. Wenn Sie möchten, dass die CSS-Dateien in separaten Dateien zusammengefasst werden, sollten Sie sie nicht zusätzlich konklamen.

var gulp = require('gulp'); 
var minify = require('gulp-minify-css'); 
var rename = require('gulp-rename'); 

gulp.task('minify', function() { 
    gulp.src('./*.css') 
     .pipe(minify({keepBreaks: true})) 
     .pipe(rename({ 
      suffix: '.min' 
     })) 
     .pipe(gulp.dest('./')) 
    ; 
}); 

gulp.task('default', ['minify'], function() { 

}); 
+1

Wenn ich das mache, wird es erstellt neue Dateien mit .min.min.css bei jedem Speichern. Warum macht es das? – jaminroe

+4

Auf src können Sie immer die zu ignorierenden Dateien mit "!" Angeben. Beispiel (Sie möchten alle * .min.css-Dateien in Ihrem css-Ordner und Unterordner ausschließen: 'gulp.src (['css/**/*. Css', '! Css/**/*. min.css ']) ' – intellion

10

Ich versuchte die früheren Antworten, aber ich bekam eine endlose Schleife, weil ich die Dateien nicht ignorierte, die bereits minimiert wurden.

Erster Einsatz dieser Code, die auf andere Antworten ähnelt:

//setup minify task 
var cssMinifyLocation = ['css/build/*.css', '!css/build/*.min.css']; 
gulp.task('minify-css', function() { 
    return gulp.src(cssMinifyLocation) 
    .pipe(minifyCss({compatibility: 'ie8', keepBreaks:false})) 
    .pipe(rename({ suffix: '.min' })) 
    .pipe(gulp.dest(stylesDestination)); 
}); 

Beachten Sie die '!css/build/*.min.css' im src (dh var cssMinifyLocation)

//Watch task 
gulp.task('default',function() { 
    gulp.watch(stylesLocation,['styles']); 
    gulp.watch(cssMinifyLocation,['minify-css']); 
}); 

Sie verkleinerten Dateien sowohl in der Uhr zu ignorieren haben und die Aufgabe.

2

Dies ist, was ich

var injectOptions = { 
    addSuffix: '?v=' + new Date().getTime() 
}; 

Dann

return gulp.src('*.html') 
    .pipe(wiredep(options)) 
    .pipe(inject(injectSrc, injectOptions)) 
    .pipe(gulp.dest('')); 

Endergebnis ist einzigartig Zeitstempel hinzugefügt

Beispiel in index.html

<script src="/public/js/app.js?v=1490309718489"></script>