CSS tömörítés

Mi másra lehetne alkalmas egy ilyen verőfényes vasárnap délután, mint a CSS-ek betömörítésére. Ebből az alkalomból összedrótoztam egy kis PHP scriptet, amit ideális esetben mindig akkor fogunk lefuttatni, amikor a dev környezetből kipakoljuk a művet élesbe.

<?php

$tplDir = '/var/www/site/';

// definiáljuk a css-eket
$fileArr = array(
	'scripts/validation/validation.css',
	'scripts/scriptaculous/autocomplete.css',
	'templates/common.css',
	'templates/content/module.css',
	'templates/pages/module.css',
);

foreach($fileArr AS $file) {

	// ez lesz az új fájlok kiterjesztése
	$compressedFile = str_replace('.css', '.compressed.css', $file);

	$bc = $env->getFileContent($tplDir.$file); // kiszedjük a $bc változóba a css-ek tartalmát (fopen, curl, akármi...)

	if($bc) {
		$bc = preg_replace('!/\\*[^*]*\\*+([^/][^*]*\\*+)*/!', '', $bc);
		$bc = preg_replace('![\\n\\r\\t]!', "", $bc);
		$bc = preg_replace('! *([\\{\\};,:]) *!', "$1", $bc);
		$bc = preg_replace('!\\}!', "}\\n", $bc);

		// sortörések + import css-ek fájlneveinek cserélése
		$bc = str_replace(array("\\r\\n", "\\r", "\\n", ".css"), array('', '', '', '.compressed.css'), $bc);

		touch($tplDir.$compressedFile);
		$f = fopen($tplDir.$compressedFile, "w");
		fwrite($f, $bc);
		fclose($f);
	}

}

?>

Beolvassa egyenként a fájlok tartalmát, szépen kiszedi a felesleges szóközöket, sortöréseket, meg minden egyebet, majd az így létrejött új fájlok kapnak egy .compressed.css kiterjesztést – ezekre hivatkozunk az éles site HTML kódjában, az eredetiek pedig megmaradnak a fejlesztéshez.

Házi feladat: ugyanezt JavaScriptre.

A bejegyzés kategóriája: Nincs kategorizálva
Kiemelt szavak: , , .
Közvetlen link.

CSS tömörítés bejegyzéshez 1 hozzászólás

  1. Robika hozzászólása:

    én a Minify -t használom erre ( http://code.google.com/p/minify/ ), egy redirect viszi rá a .js és .css fájlokat, megnézi, hogy módosult-e a saját cache-éhez képest, és ha igen, akkor újra összecsomagolja… ügyes cucc ez is, bár tény, hogy kicsit több sor a kódja (bár a caching miatt mindegy). Csak php5 alatt megy (legalábbis ezt állítja magáról, nem próbáltam ki…)

ITT és MOST VÁRJUK A HOZZÁSZÓLÁST!

Email cím (nem tesszük közzé) A kötelezően kitöltendő mezőket * karakterrel jelöljük

*

A következő HTML tag-ek és tulajdonságok használata engedélyezett: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>