Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CSS minify and rename with gulp

I've a variable like

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

What I want the gulp to do for me is to minify the files and then rename for me.

But the tasks is currently written as (for one file)

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

How to rewrite so it work with my variable files defined above?

like image 723
Howard Avatar asked Sep 10 '14 11:09

Howard


People also ask

Which package helps in Minifying the CSS in Gulp?

For this tutorial, make sure you have the latest version of the npm package installed on your machine. If you do not have it, you can download it here. Very good, now with the dependencies installed in the project, let's create a file called Gulpfile. js.


3 Answers

You should be able to select any files you need for your src with a Glob rather than defining them in an object, which should simplify your task. Also, if you want the css files minified into separate files you shouldn't need to concat them.

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() {  }); 
like image 162
Doodlebot Avatar answered Sep 20 '22 19:09

Doodlebot


I tried the earlier answers, but I got a never ending loop because I wasn't ignoring the files that were already minified.

First use this code which is similar to other answers:

//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)); }); 

Notice the '!css/build/*.min.css' in the src (i.e. var cssMinifyLocation)

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

You have to ignore minified files in both the watch and the task.

like image 35
bbuie Avatar answered Sep 19 '22 19:09

bbuie


This is what I have done

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

Then

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

end result is unique timestamp added

Example in index.html

   <script src="/public/js/app.js?v=1490309718489"></script>
like image 31
Tom Stickel Avatar answered Sep 21 '22 19:09

Tom Stickel