PostCSS Deep Dive Ce que vous devez savoir

S'il y a une chose que vous devez vraiment savoir sur PostCSS, c'est que vous devriez apprendre ce que c'est et comment l'utiliser au plus vite.

Dans cette série, nous allons nous plonger dans PostCSS et vous expliquer toutes les manières principales de l’utiliser. Si ce dont PostCSS est capable ne vous a pas déjà ébloui, préparez-vous à un nouveau monde CSS courageux.

Introduction à PostCSS

PostCSS gagne en popularité à une vitesse vertigineuse. De plus en plus de gens commencent à comprendre ce que cela offre, profitant de ce «moment d'ampoule» lorsqu'ils réalisent qu'ils peuvent l'utiliser uniquement dans leurs propres projets..

En 2014, il y avait un peu moins de 1,4 million de téléchargements au total pour l'année, mais de janvier à juin 2015, il y avait déjà eu plus de 3,8 millions de téléchargements..

Autoprefixer, un plugin très populaire pour PostCSS, est utilisé par Google, Shopify, Twitter, Bootstrap et CodePen. WordPress utilise également Autoprefixer, ainsi que le plugin RTLCSS. Et Alibaba utilise plusieurs plugins PostCSS, en plus de développer leurs propres projets et de contribuer à d’autres projets de plugins..

Au-delà, Mark Otto a parlé de l’écriture de Bootstrap version 5 dans PostCSS:

Oh, btw-Bootstrap 4 sera dans SCSS. Et si vous vous en souciez, v5 sera probablement dans PostCSS parce que merde sainte ça sonne bien.

- Mark Otto (@mdo) 23 avril 2015

PostCSS vient d'être intégré dans CodePen.io et peut être utilisé en ligne en le sélectionnant dans les paramètres CSS:

PostCSS sur CodePen

PostCSS se développe, croît rapidement, et pour cause.

PostCSS en quelques mots

Alors, qu'est-ce que PostCSS? La meilleure définition provient de la page GitHub du projet:

“PostCSS est un outil de transformation de CSS avec les plugins JS. Ces plugins peuvent supporter des variables et des mixins, transpiler la future syntaxe CSS, les images inline, etc..

En un mot, PostCSS prend CSS et le transforme en une forme de données que JavaScript peut manipuler. Des plugins JavaScript pour PostCSS effectuent ensuite lesdites manipulations de code. PostCSS lui-même ne change pas votre CSS, il ouvre simplement la voie aux plugins pour effectuer les transformations pour lesquelles ils ont été conçus..

Il n’existe pratiquement aucune limitation quant au type de manipulation que les plug-in PostCSS peuvent appliquer à CSS. Si vous pouvez y penser, vous pouvez probablement écrire un plugin PostCSS pour y arriver..

Les plugins PostCSS peuvent se comporter comme des pré-processeurs; ils peuvent optimiser et auto-préfixer le code, ils peuvent ajouter une syntaxe future, ils peuvent effectuer le linting, ils peuvent traiter les variables et la logique, ils peuvent fournir des systèmes de grille complets, ils peuvent offrir des raccourcis de codage… la liste est longue et variée.

Qu'est-ce que PostCSS? ne pas

Le fait que vous puissiez faire à peu près tout ce que vous voulez avec les plugins PostCSS, combiné au fait que PostCSS est encore relativement nouveau, a conduit à des idées fausses sur ce qu'est réellement l'outil..

De nombreuses personnes (y compris moi-même au départ) ont eu une impression incomplète de ce que PostCSS est en réalité et ont donc soit oublié ce que PostCSS a à offrir, soit sont arrivées en retard à la table..

Donc, avant d’aller plus loin, éclaircissons quelques-unes des choses que PostCSS est ne pas.

PostCSS n'est pas un Pré-processeur

De nombreux développeurs ont dit abandonner les pré-processeurs CSS au profit de PostCSS. Pendant ce temps, d’autres affirment que, parce qu’ils préfèrent leur préprocesseur actuel, ils n’aiment pas PostCSS. Cependant, PostCSS est ne pas un pré-processeur.

Oui, vous pouvez absolument l'utiliser comme préprocesseur si vous le souhaitez, mais vous pouvez également utiliser PostCSS sans aucune fonctionnalité semblable à celle d'un préprocesseur. Vous pouvez même continuer à utiliser votre préprocesseur préféré conjonction avec PostCSS.

PostCSS n'est pas un Poster-processeur

PostCSS a le mot "post" dans le nom, mais ce n'est pas vraiment un "post-processeur" non plus. Le post-traitement est généralement considéré comme prenant une feuille de style finie comprenant la syntaxe CSS valide / standard et le traitant, pour faire des choses comme ajouter des préfixes de fournisseur. Cependant, PostCSS n'est pas limité à fonctionner uniquement de cette manière. Comme mentionné ci-dessus, il peut aussi se comporter comme un pré-processeur.

Il est peut-être préférable de considérer simplement PostCSS comme un «processeur». Andrey Sitnik, le créateur de PostCSS, a déclaré sur Twitter:

Il est temps d'admettre mes erreurs. Le terme «post-processeur» était mauvais. L’équipe PostCSS s’est arrêtée pour l’utiliser. https://t.co/vs2AiXGoJy

- PostCSS (@PostCSS) 28 juillet 2015

Et comme l'a décrit Maxime Thirouin, contributeur et développeur de plugins PostCSS prolifique, sur Twitter, plutôt que le «post» dans PostCSS faisant référence au traitement «post», il est préférable de penser que «CSS et au-delà».

@HugoGiraudel, plus personne dans les contributeurs postcss n'utilise plus cette expression. Maintenant c'est Postcss comme "css and beyond"

- Maxime Thirouin (@MoOx) le 21 juillet 2015

PostCSS n'est pas une "syntaxe future"

Il existe d’excellents et très connus plugins PostCSS qui vous permettent d’écrire dans la syntaxe future, c’est-à-dire en utilisant CSS qui sera disponible dans le futur mais qui n’est pas encore largement supporté. Cependant, PostCSS n’est pas inhérent à la prise en charge de la syntaxe future.

Certains développeurs ont exprimé leur réticence à utiliser PostCSS, affirmant que c'était parce qu'ils ne savaient pas être à l'aise avec l'écriture de la syntaxe future. Cependant, écrire une syntaxe future n’est qu’un des nombreux moyens d’utiliser PostCSS..

Si vous le souhaitez, vous pouvez utiliser PostCSS pour révolutionner complètement vos processus de développement sans une ligne de syntaxe future en vue..

PostCSS n'est pas un outil de nettoyage / d'optimisation

Le succès du plug-in Autoprefixer a conduit à la perception commune de PostCSS comme étant quelque chose que vous exécutez sur votre CSS terminé pour le nettoyer et l'optimiser afin de le rendre rapide et compatible avec tous les navigateurs. C’est la perception que j’avais moi-même, jusqu’à ce que j’apprenne le grand nombre d’autres réalisations que vous pouvez réaliser avec PostCSS..

Oui, il existe de nombreux plugins fantastiques qui offrent d'excellents processus de nettoyage et d'optimisation, mais ils ne représentent qu'une fraction de ce qui est proposé..

PostCSS n'est pas un Un Chose

La chose la plus convaincante à propos de PostCSS est qu’il n’est pas limité à un seul type de fonctionnalité; il représente un ensemble de fonctionnalités totalement personnalisable et configurable potentiellement illimité.

Considérez les plugins WordPress comme un parallèle. Les plugins de commerce électronique sont très populaires, mais personne ne considère WordPress comme un moteur de commerce électronique, et les avantages de WordPress ne sont pas évalués en fonction de ses plugins de commerce électronique..

Dans le cas de PostCSS, j'aime bien penser que c'est comme le pain que vous utilisez pour faire un sandwich. En soi, cela ne semble pas grand-chose, mais c'est exactement ce que cela est censé être, et cet apparent «vide» est la raison pour laquelle il a tant de potentiel. C'est la capacité pour une variété infinie de remplissages qui vous donne quelque chose d'incroyable.

Un sandwich, hier

J'ai essayé un sandwich au beurre de cacahuète et je ne l'ai pas aimé? Ce n'est absolument pas une raison pour éliminer le pain et tous les types de sandwichs pour toujours. Au lieu de cela, essayez le remplissage suivant et vous découvrirez peut-être quelque chose qui devient une nouvelle partie de votre vie quotidienne..

Qu'est-ce qui rend PostCSS spécial?

PostCSS est une approche totalement différente du CSS. Un contractant de Londres avec qui j'ai discuté l'a décrit comme «un couteau suisse pour la production de CSS» et c'est une description tout à fait appropriée.

Jetons un coup d'oeil à quelques-unes des choses qui rendent PostCSS si spécial.

Son écosystème de plugins offre des fonctionnalités diverses

Aussi incroyable que PostCSS soit, c'est la longue liste de plugins divers qui le fait briller. Lorsque vous lisez la liste des plugins disponibles sur la page PostCSS GitHub, vous trouverez une variété de fonctionnalités qui n’ont jamais été contenues dans un seul espace auparavant..

Il existe des plugins pour la syntaxe future, vous permettant d'utiliser des fonctions telles que les fonctions de couleur, les dégradés de coniques, les propriétés personnalisées, les sélecteurs personnalisés, les alias personnalisés pour les requêtes multimédia et bien plus encore..

Il existe des plugins de secours pour créer une syntaxe classique, comme l’ajout de replis hexadécimaux pour rgba () couleurs, l'ajout de filtres d'opacité pour IE8, la conversion des sélecteurs d'éléments psuedo pour IE8 et la génération px les replis pour rem des unités.

Plus de vingt plugins d'extension de langue sont disponibles, y compris l'ajout de mixins, de variables, de conditions, de boucles for et each, de la génération de classes de style BEM et SUIT et de plusieurs autres.

Une sélection de plug-ins de gestion des couleurs est disponible, permettant la conversion d'un format de couleur à un autre, la modification des niveaux alpha, la combinaison de couleurs, la génération de jeux de couleurs respectueuses de l'aveuglement des couleurs, pour en nommer quelques-uns..

Il existe des systèmes de grille, des outils d'optimisation, des plugins qui ajoutent des raccourcis et des raccourcis, des linters et d'autres plugins d'analyse et de reporting.

Il n'est pas possible d'exprimer pleinement la diversité sans cesse croissante de la sélection de plug-in actuelle dans quelques paragraphes, alors assurez-vous de consulter la liste par vous-même..

C'est modulaire; N'utilisez que ce dont vous avez besoin

Le revers de la liste incroyable de plugins disponibles pour PostCSS est que vous pouvez en utiliser autant ou autant que vous le souhaitez..

Vous voulez simplement utiliser PostCSS pour rendre votre CSS plus efficace et plus convivial entre navigateurs? Chargez quelques plugins d'optimisation et vous êtes absent.

Voulez-vous utiliser PostCSS uniquement en tant que pré-processeur? Utilisez des plugins d'extension de langue à la place et vous êtes prêt.

La philosophie sous-jacente de PostCSS est la modularité du grain, dans laquelle il n’existe aucun plugin imposant qui gère plusieurs fonctions. Au lieu de cela, un plugin est créé par fonction, et à partir de là, ils peuvent être assemblés en packs de plugins avec des fonctionnalités communes..

Par exemple, vous pouvez choisir vous-même une sélection de plug-ins pour les extensions de langue et créer votre propre préprocesseur personnalisé. Ou bien, vous pouvez simplement charger le pack PreCSS qui vous donnera un accès automatique à plusieurs plugins d'extension de langue à la fois..

Quelle que soit la manière dont vous souhaitez utiliser PostCSS, vous pouvez exécuter uniquement les plug-ins dont vous avez besoin pour vos besoins spécifiques, ce qui signifie que vous n'avez pas à traîner les fonctionnalités inutilisées sous forme de poids mort..

C'est rapide: jusqu'à 3 fois plus rapide

Les tests PostCSS sont très rapides dans les tests de performance pour deux raisons principales. Le premier est le fait que vous ne devez charger que les plugins dont vous avez besoin, comme décrit ci-dessus. L'autre est qu'il fonctionne sur JavaScript.

Vous pouvez exécuter ces tests de performance pour vous-même en utilisant https://github.com/postcss/benchmark

Le résultat de l'un de ces tests de performances, analyses d'analyse, règles imbriquées, mixins, variables et mathématiques, était:

PostCSS: 36 ms Retouche: 77 ms (2,1 fois plus lente) libsass: 136 ms (3,8 fois plus lente) Moins: 160 ms (4,4 fois plus lente) Stylet: 167 ms (4,6 fois plus lente) Stylecow: 208 ms (5,7 fois plus lente) Ruby Sass: 1084 ms (30,1 fois plus lent)

Vous pouvez créer vos propres plugins pour ce que vous voulez

Les plugins pour PostCSS sont écrits en JavaScript et, de ce fait, toute personne pouvant écrire du JavaScript peut créer un plugin à sa guise. Pour vous donner une idée, je ne me considère absolument pas comme un développeur JavaScript noyau dur, mais après avoir découvert PostCSS, j'ai pu créer mon premier plugin entièrement fonctionnel en l'espace de quelques heures..

Les projets préprocesseurs tels que Stylus, Sass et LESS font un travail formidable, mais ils ne peuvent pas plaire à tout le monde. Ils doivent choisir les fonctionnalités qui serviront le mieux leurs utilisateurs dans leur ensemble. Si vous souhaitez utiliser une fonctionnalité, vous pouvez demander une fonctionnalité, mais celle-ci peut être considérée comme étant non conforme aux besoins plus larges du projet..

Même si vous faites une demande de fonctionnalité jugée appropriée, les responsables du projet sont généralement des volontaires non rémunérés qui n'ont peut-être pas le temps de les développer. Donc, si vous n'avez pas le niveau de compétence nécessaire pour le créer, vous n'avez pas de chance.

Avec PostCSS, par contre, vous n'avez rien à demander à personne. Si vous voulez une nouvelle fonctionnalité, vous pouvez la créer. D'après mon expérience, le niveau d'expérience JavaScript requis pour créer un plug-in PostCSS serait gérable pour de nombreux développeurs front-end..

Dans un didacticiel ultérieur de cette série, nous allons créer un plug-in PostCSS de base. Même si vous ne vous considérez pas comme un expert de JavaScript, je pense que la création de plug-in PostCSS est tout à fait réalisable..

Vous pouvez l'utiliser avec du CSS régulier

Une très grande partie des plugins PostCSS ne nécessite pas l'utilisation d'une syntaxe personnalisée, comme c'est le cas avec les pré-processeurs. Au lieu de cela, ils peuvent être appliqués aux CSS classiques. Cela signifie que vous pouvez utiliser PostCSS avec tout fichier CSS que vous possédez, tel que des feuilles de style terminées à partir d'un framework frontal, d'un projet de quelqu'un d'autre ou d'un fichier Normalize.css par exemple..

Cela signifie également que vous n'êtes pas exclu des projets utilisant un préprocesseur particulier, que ce soit Stylus, Sass ou LESS, car vous pouvez toujours appliquer PostCSS au CSS compilé. Par exemple, si vous utilisez Foundation via Sass, vous pouvez exécuter des plug-ins d'optimisation et de syntaxe future après avoir généré les fichiers CSS de votre projet..

Les bibliothèques PostCSS ne sont pas liées à un seul préprocesseur

Nous commençons également à voir des bibliothèques entières construites avec PostCSS, où auparavant elles étaient écrites en Stylus, Sass ou LESS..

Par exemple, Cory Simmons maintenait à l'origine les versions Stylus et Sass de son système de grille Lost afin que les utilisateurs des deux préprocesseurs puissent y accéder. Il a ensuite porté le projet sur PostCSS, ce qui signifie que tout le monde peut maintenant utiliser Lost, y compris les utilisateurs Stylus et Sass, mais aussi les utilisateurs MOINS et les personnes ne travaillant pas du tout avec un pré-processeur..

Il se déploie de manière transparente avec des outils populaires

Étant basé sur JavaScript, PostCSS n'exige pas que Ruby soit installé, et il offre des intégrations prédéfinies pour plusieurs outils de développement..

  • Il y a des plugins pour Grunt, Gulp, Webpack, Broccoli, Brunch et ENB.
  • CodePen vous permet d'utiliser PostCSS en ligne.
  • Prepros a un support intégré pour les plugins Autoprefixer et cssnext.
  • Le plugin postcss-use vous permet de charger facilement d’autres plugins avec de simples @ règles dans votre CSS
  • Vous pouvez utiliser un fichier “package.json” afin que npm puisse installer automatiquement les plugins PostCSS utilisés par un projet via une commande à deux mots: npm installer. Cela facilite le partage des projets PostCSS, malgré le grand nombre de variations possibles dans la configuration du plugin..

Nous verrons comment vous pouvez configurer l'utilisation de PostCSS dans la section «Guide de démarrage rapide» de cette série..

Bon, récapitulons

La première chose que vous devez savoir, c’est que le PostCSS accélère, et pour cause, le moment est venu de bien comprendre comment il peut aider vos processus de développement..

Dans cette introduction, nous avons couvert ce que PostCSS n’est PAS:

  • Ce n'est pas un pré-processeur, bien qu'il puisse éventuellement se comporter comme tel.
  • Ce n'est pas un post-processeur, bien qu'il puisse éventuellement se comporter comme tel..
  • Il ne s'agit pas de «syntaxe future», bien que cela puisse faciliter la prise en charge de la syntaxe future
  • Ce n'est pas un outil de nettoyage / d'optimisation, bien qu'il puisse fournir une telle fonctionnalité.
  • Ce n'est pas une chose c'est un moyen de fonctionnalités potentiellement illimitées configurées à votre choix.

Nous avons également expliqué ce qui rend PostCSS spécial:

  • La diversité des fonctionnalités disponibles via son écosystème de plugins
  • Sa nature modulaire, «utilisez ce dont vous avez besoin»
  • Son temps de compilation rapide
  • L'accessibilité de créer vos propres plugins
  • L'option de l'utiliser avec du CSS normal
  • La possibilité de créer des bibliothèques ne dépendant pas d'un seul préprocesseur
  • Son déploiement transparent avec de nombreux outils de construction populaires

À venir dans «PostCSS Deep Dive»

Dans cette série, nous allons commencer par vous expliquer comment commencer à utiliser PostCSS via les tutoriels:

  • Guide de démarrage rapide - Options d'installation instantanée
  • Guide de démarrage rapide - Configuration de Gulp
  • Guide de démarrage rapide - Configuration Grunt
  • Guide de démarrage rapide - Explorer les plugins

À partir de là, nous examinerons de près différentes façons d’utiliser PostCSS dans les tutoriels:

  • Pour la compatibilité entre navigateurs
  • Pour la minification et l'optimisation
  • Prétraitement avec PreCSS
  • Rouler votre propre pré-processeur
  • En conjonction avec Stylus / Sass / LESS
  • Méthode BEM / SUIT CSS
  • Raccourcis et raccourcis
  • Divers goodies PostCSS

Enfin, nous allons terminer en vous faisant traverser créer votre propre plugin PostCSS de base.

Vous remarquerez peut-être une absence flagrante de didacticiel sur l'utilisation de PostCSS pour activer les futures CSS, d'autant plus que beaucoup de gens voient les deux comme presque synonymes..

La raison de cette absence temporaire, cssnext, est le plug-in le plus important pour les CSS à venir. Elle est sur le point de subir une transformation majeure qui pourrait modifier considérablement les étapes nécessaires à son utilisation. En tant que tel, nous garderons un œil dessus et vous proposerons un nouveau tutoriel une fois le projet terminé..

Alors commençons! Dans le prochain tutoriel, nous allons entrer directement dans notre «Guide de démarrage rapide» et vous montrer les moyens les plus rapides pour commencer à utiliser PostCSS. on se verra là bas!