Texte

Minification CSS avec Lua

La semaine passée, je me suis lancé dans la confection d'un petit script lua pour minifier le CSS, que j'ai simplement nommé cssmin.

Il n'y pas de dépendance. Tout ce que vous avez besoin c'est de lua (>= 5.1).

cssmin consiste donc à:

  • supprimer les saut de lignes;
  • retirer les espaces autour des caratères suivants: :, ;, ,, *, >, {, }, ~;
  • et finalement effacer les commentaires.

Je n'ai cependant pas retiré les espaces autour des caractères + et -, puisque que dans la fonction calc(), il doit y avoir ces espaces entre les valeurs et les opérateurs d'addition et de soustraction, sinon les calculs ne fonctionnent pas.

Éventuellement, je préciserai ma condition pour viser tout ce qui se trouve en-dehors de cette fonction.

Vous pouvez consulter le code ici: https://codeberg.org/hs0ucy/cssmin.

Comment l'utiliser?

D'abord récupérer cssmin avec git:

git clone https://codeberg.org/hs0ucy/cssmin.git

Il faut ensuite passer un fichier CSS en argument. Le résultat s'affichera dans le terminal (stdout):

./cssmin ../monprojetweb/css/styles.css

Pour rediriger le contenu dans un fichier:

./cssmin ../monprojetweb/css/styles.css > ../monprojetweb/css/styles.min.css

Si vous êtes sous GNU/Linux ou BSD, vous pouvez déposer cssmin dans $HOME/.local/bin/, afin de rendre la commande globale dans votre environnment.

Automatiser la minification

Pour automatiser l'exécution de cssmin, il suffit d'utiliser entr:

echo styles.css | entr -s 'cssmin styles.css > styles.min.css'

Donc si styles.css est modifié, la commande qui suit entr -s sera exécutée.

Et pour le JavaScript?

Il y a JSMin par Douglas Crockford, le père du format JSON. C'est une application autonome écrite en C.

C'est d'ailleurs JSMin qui m'a donné l'envie d'écrire cssmin.