Minificar CSS con Gulp

por

Una de las ventajas de usar Gulp es que tiene una infinidad de módulos que puedes instalar y aprovechar. En esta osación vamos a ver como podemos minificar uno o varios archivos CSS en uno sólo.

Minificando CSS

Lo primero que debemos hacer es instalar los módulos adecuados con npm en nuestro proyecto.

	npm install gulp-minify-css --save-dev
	
	npm install gulp-rename --save-dev

Con ellos ya instalados los incluímos en nuestro gulpfile.js y creamos la tarea adecuada:

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

	var cssDir = 'src/css/main.css',
		cssDest = 'public/css';	

	gulp.task('styles', function() {
		gulp.src(cssDir)
		.pipe(rename({
			basename: 'main',
			extname: '.min.css'
		}))
		.pipe(minifyCss())		
		.pipe(gulp.dest(path.cssDest))
	}); 

La tarea obtiene el archivo main.css de la ruta src/css, a continuación lo renombra a main.min.css y por último lo minifica y lo deja en la ruta dist/css.

Esto nos serviría para minificar un unico archivo, pero ¿y si quiero comprimir N ficheros en un único main.min.css? Pues aquí viene la solución.

Debemos instalarnos un nuevo módulo adicional:

	npm install gulp-concat --save-dev

Y una vez instalado tenemos que modificar un poco nuestra tarea styles para que haga lo que queremos. El nuevo código sería el siguiente:

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

	var cssDir = 'src/css/main.css',
		cssDest = 'public/css';
		
	gulp.task('styles', function() {
		gulp.src(cssDir)
			.pipe(concat('main.css'))
			.pipe(rename({
				basename: 'main',
				extname: '.min.css'
			}))
			.pipe(minifyCss())		
			.pipe(gulp.dest(cssDest))
	});

Lo que hemos añadido es una linea que nos permite concatenar los recursos que hemos obtenido en un único archivo main.css que a continuación renombramos y minicamos, dejándolo finalmente en la ruta elegida.

Espero que os haya servido.

COMENTARIOS

DEJA TU COMENTARIO