Project

General

Profile

Développement #38205

CSS: gestion automatique des prefix navigateurs

Added by Thomas Jund almost 5 years ago. Updated 4 days ago.

Status:
Rejeté
Priority:
Normal
Assignee:
-
Target version:
-
Start date:
04 December 2019
Due date:
% Done:

0%

Estimated time:
Patch proposed:
No
Planning:
No

Description

Je propose l'utilisation d'autoprefixer https://github.com/postcss/autoprefixer
Pour générer automatiquement les préfixes navigateurs.

Cet outil est basé sur browserlist et l'api de canIuse pour appliquer automatiquement les prefixes nécessaires à une liste de navigateur qu'on lui passe en paramètre.

Avantages :

  1. Notre base de code reste propre, on peut nettoyer tous les prefixes qui trainent et qui ne servent plus (comme les `vendor-prefix(…)).
  2. On ne se soucie plus des prefixes pour flexbox et le jour prochain où on abandonne IE10, pas de travail de nettoyage à faire :), on enlève juste IE10 de la liste des navigateurs à supporter.
  3. On peut commencer à utiliser css-grid, qui apporterait des solutions à bien des problèmes de layout que nous avons.
  4. Et plein d'autres trucs nouveau en amélioration progressive pour les mobiles avec @supports (comme snap-scroll, position sticky, …).

Related issues

Related to Intégrations graphiques Publik - Développement #38662: Supprimer les vendor-prefix pour les proriétés transitionsFermé20 December 2019

Actions
Related to Intégrations graphiques Publik - Développement #42287: CSS: supprimer les propriétés flexbox préfixéesFermé29 April 2020

Actions

History

#1

Updated by Frédéric Péters almost 5 years ago

On doit dépendre d'outils qui sont disponibles dans Debian (stretch).

Il y a bien https://packages.debian.org/search?keywords=node-postcss et https://packages.debian.org/search?keywords=node-autoprefixer, ce dernier pouvant être autre chose, mais ce n'est pas pour stretch.

Pour les mini-trucs à faire, genre ajouter des préfixes pour les flexbox, ça sera plus gérable de faire le script moi/nous-même; pour virer les vendor-prefix obsolètes, de faire le taf une fois et voilà.

Pour les trucs sophistiqués, ce serait à voir au cas par cas, sans doute des trucs possibles, sans doute d'autres pas, clairement moins satisfaisant que se dire que toutes les fonctionnalités sd'un module existant sont disponibles, j'en ai conscience.

#2

Updated by Thomas Jund almost 5 years ago

Je pose juste l'idée. On peut bien sûr tout gérer manuellement (avec les oublis et le fait qu'on laisse toujours trainer des trucs). Mais si on peut éviter de devoir maintenir ce code qui est forcement transitoire et nous permettre de nous lancer dans du CSS un peu plus moderne sans avoir à apprendre des syntaxes de code déjà obsolètes, je préférerais.
Pour l'utiliser depuis des années, c'est pratique, ça marche super, et c'est dur de revenir sur un confort acquis :).

#3

Updated by Frédéric Péters almost 5 years ago

On doit dépendre d'outils qui sont disponibles dans Debian (stretch).

#4

Updated by Frédéric Péters almost 5 years ago

Et je répète également « pour les mini-trucs à faire, genre ajouter des préfixes pour les flexbox, ça sera plus gérable de faire le script moi/nous-même », qui devait répondre à : « On peut bien sûr tout gérer manuellement (avec les oublis et le fait qu'on laisse toujours trainer des trucs). ».

#5

Updated by Frédéric Péters almost 5 years ago

Et dans l'idée poc, pour autopréfixer les flexbox, (en m'occupant juste de la propriété display, c'est pour l'idée); ça se gérerait facilement via :

import css_parser

sheet = css_parser.parseFile('style.css')

for rule in sheet:
    if rule.type == rule.STYLE_RULE:
        display_property = rule.style.getProperty('display')
        if display_property and display_property.value == 'flex':
            rule.style.removeProperty('display')
            rule.style.setProperty('display', '-ms-flexbox')
            rule.style.setProperty('display', 'flex', replace=False)

open('style2.css', 'wb').write(sheet.cssText)

Ça me renforce dans l'idée qu'on peut avancer sur un mode "tiens il y a un plugin postcss qui fait ça, ce serait super d'avoir pareil".

Alors oui ça n'est pas le confort de pouvoir piocher dans mille plugins et avoir directement le job à disposition, mais c'est une méthode qui nous permettrait à la fois de conserver des builds automatiques, sur une infra saine, et de ne pas avoir à gérer manuellement les préfixes, ou d'autres trucs derrière.

#6

Updated by Thomas Jund almost 5 years ago

  • Status changed from Nouveau to Rejeté
#7

Updated by Frédéric Péters almost 5 years ago

J'aurais imaginé continuer à couvrir ça ici mais ça peut bien sûr être un autre ticket,

1/ Notre base de code reste propre, on peut nettoyer tous les prefixes qui trainent et qui ne servent plus (comme les `vendor-prefix(…)).
2/ On ne se soucie plus des prefixes pour flexbox et le jour prochain où on abandonne IE10, pas de travail de nettoyage à faire :), on enlève juste IE10 de la liste des navigateurs à supporter.

sont des trucs qui, il me semble, peuvent facilement être mis en œuvre.

#8

Updated by Thomas Jund almost 5 years ago

  • Subject changed from CSS: gestion automatique des prefix navigateurs avec autoprefixer to CSS: gestion automatique des prefix navigateurs
  • Status changed from Rejeté to Nouveau

Oups Pardon.
Dans le titre de ce ticket, j'ai proposé une solution qui résoudrait certains problèmes, plutôt que d'exposer d'abord les problèmes pour débattre sur la solution à apporter.
Maladroit. J'ai donc fait le raccourci "solution proposée rejetée == ticket rejeté".
Je vire donc "avec autoprefixer" du titre et rouvre le débat sur la pertinence de l'idée et des solutions à apporter.

#9

Updated by Thomas Jund almost 5 years ago

sont des trucs qui, il me semble, peuvent facilement être mis en œuvre.

Et quid d'ouvrir la possibilité d'utiliser css grid qui demande comme flexbox l'ajout d'une ancienne spécification pour support de IE10/11? Ou l'utilisation de toutes les autres propriétés non supportés par IE10/11 en amélioration progressive ?

#10

Updated by Frédéric Péters almost 5 years ago

Et quid d'ouvrir la possibilité d'utiliser css grid qui demande comme flexbox l'ajout d'une ancienne spécification pour support de IE10/11? Ou l'utilisation de toutes les autres propriétés non supportés par IE10/11 en amélioration progressive ?

Il faut commencer par décrire ce que ça représente. (pour flexbox, on a déjà ça utilisé, donc je peux juste voir que ça veut dire taper display: -ms-flexbox, taper -ms-flex: whatever, etc.). Ensuite, c'est sans doute possible. (et oui, je notais « moins satisfaisant que se dire que toutes les fonctionnalités d'un module existant sont disponibles »).

#11

Updated by Thomas Jund almost 5 years ago

#12

Updated by Thomas Jund almost 5 years ago

#13

Updated by Thomas Jund almost 5 years ago

  • Related to deleted (Développement #38662: Supprimer les vendor-prefix pour les proriétés transitions)
#14

Updated by Thomas Jund almost 5 years ago

Concernant les préfixes pour les propriétés transform, multi-column et backface-visibility, ils dépendent du support du browser android jusqu'à la version 4.4.4 (usage 0.26%).

Pour les prefixes Flexbox, ils sont nécessaires pour IE10 et android browser 4.4.3 (usage 0.17%)

Les stats d'usage sont tirés de CanIuse.

#15

Updated by Thomas Jund over 4 years ago

#16

Updated by Thomas Jund 4 days ago

  • Status changed from Nouveau to Rejeté

je ferme.
On va supprimer les prefixes devenus inutiles progressvement.

Also available in: Atom PDF