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.