Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

concaténation de css

6 réponses
Avatar
Olivier Masson
Bonjour,

Comme de mon côté, j'aime bien avoir une feuille de style par page + 1
globale + 1 pour le print + 1 pour le reset + 1 pour... bref 36
feuilles, je voulais faire une bête concaténation à l'appel d'une page.

Pas bien compliqué, mais ce serait bien que ce soit en cache pour éviter
de faire cette opération à chaque appel. Donc il faut vérifier qu'une
des css n'a pas été mise à jour.

Alors, plus simplement, connaissez-vous une telle fonctionnalité déjà
développée dans une solution open-source quelconque, histoire que je ne
refasse pas médiocrement quelque chose qui existe déjà ?

Merci.

6 réponses

Avatar
Olivier Miakinen
Le 15/05/2009 11:31, Olivier Masson a écrit :

Comme de mon côté, j'aime bien avoir une feuille de style par page + 1
globale + 1 pour le print + 1 pour le reset + 1 pour... bref 36
feuilles, je voulais faire une bête concaténation à l'appel d'une page.

Pas bien compliqué, mais ce serait bien que ce soit en cache pour éviter
de faire cette opération à chaque appel. Donc il faut vérifier qu'une
des css n'a pas été mise à jour.

Alors, plus simplement, connaissez-vous une telle fonctionnalité déjà
développée dans une solution open-source quelconque, histoire que je ne
refasse pas médiocrement quelque chose qui existe déjà ?



Je ne suis pas sûr de comprendre ce que tu cherches. Tu voudrais créer
un fichier unique contenant la concaténation de tous les autres ? Si
oui, est-ce qu'un makefile ne répondrait pas à la question ?
Avatar
Olivier Masson
Olivier Miakinen a écrit :

Je ne suis pas sûr de comprendre ce que tu cherches. Tu voudrais créer
un fichier unique contenant la concaténation de tous les autres ? Si
oui, est-ce qu'un makefile ne répondrait pas à la question ?



Oula ! À part pour compiler, je n'ai jamais entendu parler de makefile.

Je veux concaténer ("merger") les fichiers css, histoire de réduire les
requêtes http (et d'avoir un meilleur taux de compression gzip par la
même occasion ; tiens d'ailleurs ce serait bien que le fichier obtenu
soit débarrassé de ses commentaires).
Avatar
Sergio
Olivier Masson a écrit :
Olivier Miakinen a écrit :

Je ne suis pas sûr de comprendre ce que tu cherches. Tu voudrais créer
un fichier unique contenant la concaténation de tous les autres ? Si
oui, est-ce qu'un makefile ne répondrait pas à la question ?



Oula ! À part pour compiler, je n'ai jamais entendu parler de makefile.



Ça sert aussi à ce genre de bricole... On peut tout faire avec un makefile.

Par exemple :
Tu as 3 pages (ne compliquons pas) :
page1.html, page2.html, page3.html

Pour toutes on utilise :
commun.css, print.css

Et chacune à sa feuille particulière :
page1.css, page2.css, page3.css

Tu veux concaténer (par exemple) pour page1 : commun.css, print.css et
page1.css dans cs1.css

Tu fais un makefile :
-------------------------------
# Les fichiers à générer
all: css1.css css2.css css3.css

# dépendances :
css1.css: page1.css print.css commun.css
cat print.css commun.css page1.css >css1.css

css2.css: page2.css print.css commun.css
cat print.css commun.css page2.css >css2.css

css3.css: page3.css print.css commun.css
cat print.css commun.css page3.css >css3.css

# On peut en rajouter d'autres (avec les .js par exemple...).
-------------------------------
Et tu l'appliques à chaque fois que tu fais une modif quelque part !


--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
Olivier Masson
Sergio a écrit :

Ça sert aussi à ce genre de bricole... On peut tout faire avec un makefile.

Par exemple :
Tu as 3 pages (ne compliquons pas) :
page1.html, page2.html, page3.html

Pour toutes on utilise :
commun.css, print.css

Et chacune à sa feuille particulière :
page1.css, page2.css, page3.css

Tu veux concaténer (par exemple) pour page1 : commun.css, print.css et
page1.css dans cs1.css

Tu fais un makefile :
-------------------------------
# Les fichiers à générer
all: css1.css css2.css css3.css

# dépendances :
css1.css: page1.css print.css commun.css
cat print.css commun.css page1.css >css1.css

css2.css: page2.css print.css commun.css
cat print.css commun.css page2.css >css2.css

css3.css: page3.css print.css commun.css
cat print.css commun.css page3.css >css3.css

# On peut en rajouter d'autres (avec les .js par exemple...).
-------------------------------
Et tu l'appliques à chaque fois que tu fais une modif quelque part !





Merci, ça me semble très bien mais :
- comment génère-t-on le tout (je fais un make ???)
- est-il possible avec cette technique de le faire automatiquement
(comme je le souhaitais, si un des fichiers css a été modifié, la
concaténation se fait immédiatement) ?
- du coup, c'est géré dans le shell et plus via php (hors shell_exec...) ?
Avatar
Sergio
Olivier Masson a écrit :

Tu veux concaténer (par exemple) pour page1 : commun.css, print.css et
page1.css dans cs1.css

Tu fais un makefile :
-------------------------------
# Les fichiers à générer
all: css1.css css2.css css3.css

# dépendances :
css1.css: page1.css print.css commun.css
cat print.css commun.css page1.css >css1.css

css2.css: page2.css print.css commun.css
cat print.css commun.css page2.css >css2.css

css3.css: page3.css print.css commun.css
cat print.css commun.css page3.css >css3.css

# On peut en rajouter d'autres (avec les .js par exemple...).
-------------------------------
Et tu l'appliques à chaque fois que tu fais une modif quelque part !



Merci, ça me semble très bien mais :
- comment génère-t-on le tout (je fais un make ???)



Tu lances la commande "make" dans le répertoire contenant un fichier du
nom "makefile".

- est-il possible avec cette technique de le faire automatiquement
(comme je le souhaitais, si un des fichiers css a été modifié, la
concaténation se fait immédiatement) ?
- du coup, c'est géré dans le shell et plus via php (hors shell_exec...) ?



Ben, oui... c'est une manière statique de maintenir un ensemble de
fichiers interdépendants. Tu peux aussi, utiliser PHP pour avoir une
version statique du site :

toto.html: toto.php
php toto.php >toto.html

Voir par exemple :
http://fr.wikipedia.org/wiki/Make

make est présent dans tout système Unix (Linux et autres) et existe
aussi pour Windows...

--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Avatar
Olivier Masson
Sergio a écrit :

Ben, oui... c'est une manière statique de maintenir un ensemble de
fichiers interdépendants. Tu peux aussi, utiliser PHP pour avoir une
version statique du site :

toto.html: toto.php
php toto.php >toto.html

Voir par exemple :
http://fr.wikipedia.org/wiki/Make

make est présent dans tout système Unix (Linux et autres) et existe
aussi pour Windows...




Ah oui ça, je l'utilise depuis un paquet d'années :) Mais bon, je
compile sans en savoir bcp plus...

Bon, merci. Disons que le make c'est bien, sans vraiment répondre à mon
problème (si c'était le cas, j'aurais simplement utilisé cat sous shell)