Minification des fichiers CSS

Il existe déjà beaucoup d'outils pour réduire la taille des fichiers CSS.
Mais généralement, il utilise des langages comme NodeJS, Python, Perl.

Voici un petit script en PHP qui fait presque aussi bien :
#!/usr/bin/env php
[== PHP ==]
<?php

const PATTERN = "%-16s %6d octets\n";
const END_OF_LINES = '@\s*(\n|\r|(?:\r\n))@';
const NO_DUPLICATE = '@\s*([\s;])\s*@';

const COMMENT = '@\/\*.*\*/@Us';

function minify($filename, $target) {
	if(!file_exists($filename)) { return; }
	$content = file_get_contents($filename);
	file_put_contents(
		$target,
		preg_replace(
			[
				COMMENT, // must be first
				END_OF_LINES,
				NO_DUPLICATE,
				'@\s*([:;{}()\[\]])\s*@'
			],[
				'',
				'',
				'$1',
				'$1'
			],
			$content
		)
	);
}

echo "\n";

foreach(glob('*.css') as $filename) {
	if(!preg_match('@\.min\.css$@', $filename)) {
		printf(PATTERN, $filename, filesize($filename));
		$target = preg_replace('@\.css$@', '.min.css', $filename);
		minify($filename, $target);
		printf(PATTERN."\n", $target, filesize($target));
	}
}
?>
Enregistez le sous le nom minify.php
Si vous utilisez Linux ou IOS, placez le dans le dossier des fichiers CSS et changez les permissions pour le rendre executable ( "chmod a+x minify.php") et lancer le.
Pour les autres, c'est php -f minify.php

Réponses

Connectez-vous ou Inscrivez-vous pour répondre.