PostCSS Quickstart Guide Exploring Plugins

Som du kommer att ha samlat från tidigare poster i denna serie handlar PostCSS om plugins. De plugin du väljer definierar helt din erfarenhet med PostCSS. 

Med tanke på att de är så integrerade och grundläggande, innan vi fortsätter att faktiskt producera stilark via PostCSS, ska vi titta på hur du kan utforska PostCSS-plugins ekosystem. Genom detta får du också en bild av hur kraftfull PostCSS är, och hur den erbjuder funktionalitet som inte kan skapas lika med andra befintliga medel.

Vi täcker var du kan gå för att hålla flikar på de senaste och bästa pluginsna, kategorierna som dessa plugins faller in i och överväganden för hur du laddar alla dessa plugins till projekt på ett logiskt sätt.

Hitta pluggar

När du börjar komma igång med PostCSS finns det tre platser som du vill hålla koll på för att hitta bra plugins.

PostCSS Github-sidan

Huvudsidan för PostCSS Github repo upprätthåller för närvarande en omfattande kategoriserad lista över plugins. Denna lista tenderar att bli uppdaterad ofta så det är en ganska pålitlig plats att gå och se vilka plugins som finns tillgängliga för olika utvecklingsaspekter.

https://github.com/postcss/postcss#plugins

Katalog Site postcss.parts

En relativt ny och mycket välkommen tillägg till PostCSS-världen är webbplatsen postcss.parts, som tillhandahåller en sökbar katalog av PostCSS-plugins.

http://postcss.parts

@postcss Twitter

Just nu ser PostCSS regelbundet ut nya och intressanta plugins. Ovanstående två platser markerar inte nya plugins, så du vet inte om det finns föremål du inte sett tidigare. Av den anledningen är det en bra idé att följa eller ofta besöka @PostCSS på Twitter.

https://twitter.com/postcss

Typer av plugins

Bredden av funktionalitet i plugins som kan fungera med PostCSS är enorm, så det är en bra idé att få en introduktion till den allmänna typer av plugins som du sannolikt kommer att stöta på innan du går in på att pröva någon av dem.

förpackningar

PostCSS grundläggande karaktär är att den erbjuder modulär CSS-bearbetning. Som sådan uppmuntras enskilda plugins att endast täcka en liten, tydligt definierad uppsättning funktionalitet. Megalitiska multifunktionspluggar som gör allt på en gång är avskräckta.

Med det sagt, ibland vill du ha en lång lista över funktionalitet i ett projekt, och du vill hellre inte behöva installera och konfigurera 20 olika plugins. Här kommer "packar" till spel. Packar samlar flera modulära plugins under ett tematiskt paraply, så att alla kan installeras och distribueras på en gång.

Till exempel kombinerar PreCSS-paketet nio separata PostCSS-plugins för att skapa Sass-liknande funktionalitet. Cssnano-paketet använder omkring tjugo PostCSS-plugins för att ge CSS-minifiering och optimering. Genom att använda dessa förpackningar sparar du själv att installera och ladda varje plugin manuellt.

Framtida CSS-syntax

Framtida CSS handlar om att låta dig skriva syntax som vi vet kommer upp i W3C-specifikationen, men kanske inte fullt ut stöds i webbläsare än.

Du kanske till exempel vill använda den kommande åtta eller fyrsiffriga hexidekala notationen för att skapa opaka färger. För att skapa en något transparent blå kan du använda en färgkod som # 0000ffcc, eller dess förkortade form # 00fc, och kör postcss-color-hex-alpha-plugin för att konvertera det till det brett stödda formatet rgba (0, 0, 100%, 0,8).

Den mest framträdande närvaron i PostCSS framtida CSS är cssnext-paketet, vilket ger en hel del spec-kompatibel framtida CSS till bordet. Men för närvarande utvecklaren Maxime Therouin tar packen genom en större övergång i hur den fungerar. Som sådan kommer vi att hålla eld på att ge dig en framtida CSS-handledning tills övergången är klar.

gångarna

Där framtida CSS handlar om att göra morgondagens kodarbete i dagens webbläsare handlar det i huvudsak om att dagens kod fungerar i gårdagens webbläsare. I en perfekt värld skulle vi aldrig behöva tänka på gamla och föråldrade webbläsare, men verkligheten är att det fortfarande finns några projekt som stödjer äldre webbläsare är nödvändiga. Fallbacks-kategorin i PostCSS-plugins kan hjälpa till där det är fallet.

Alla dessa plugins kör handsfree, vilket innebär att du skriver din kod enligt gällande standarder, och pluginsna hittar kod som behöver äldre fallbacks och sätter dem automatiskt in efter behov.

Till exempel kan du ha platta färger tillagt som fallbacks för RGBA () färger med postcss-color-rgba-plugin, eller lägg till IE8-kompatibla fallbacks för opacitet via plug-in-opacitet plugin. Den mest kända för dessa plugins är Autoprefixer, som lägger till leverantörs prefix efter behov, baserat på data från CanIUse.com.

Du kommer lära dig mer om återhämtnings-plugins i den kommande "Tillsammans med webbläsarkompatibilitet" i denna serie.

Språkförlängningar

Plugin för språktillägg lägger till funktionalitet för CSS som annars inte skulle vara där. Som jämförelse kan du överväga att de flesta förprocessorer helt och hållet består av språkförlängningar. Faktum är att användare av Sass, Stylus och LESS sannolikt kommer att känna sig riktigt hemma med många PostCSS-språkförlängningar, till exempel de som lägger till mixins, variabler, conditionals, loopar, häckning, förlängning och så vidare.

Eftersom PostCSS är helt flexibel men det finns också språkförlängningar som erbjuder funktionalitet som inte vanligtvis finns i preprocessorer. Till exempel lägger postcss-bem-plugin syntaxen specifikt för att skapa CSS som följer BEM / SUIT-metoden, (mer om det i en senare handledning). Pluggen för postcss-define-property kan du skapa egna anpassade egenskaper eller omdefiniera inhemska egenskaper. Och plug-in-plug-in kan du använda inte bara villkor, men mönster-matchande logik i din kod.

Med denna sort är alla indikationer att PostCSS kommer att mogna till den punkt där det kan ge mycket av den funktionalitet som många av oss söker efter i förprocessorer, men också en stor funktionalitet utöver det.

Färger

Många av de färgproppar som för närvarande finns tillgängliga för PostCSS handlar om att omvandla färger från ett format till ett annat, till exempel från # hex.a till RGBA ()HCl (H, C, L) till #rgb, eller pantone till #rgb. Dessutom hanterar några av de mest användbara plugins färgmanipulationen, som blandar två färger, eller skalar ljuset eller mörkret av dem.

En speciell favorit av mig tillåter dig att ta ditt befintliga färgschema och sedan utföra en version som det verkar för personer med specifika former av färgblindhet. Det finns inget som att uppleva något första hand för att hjälpa dig att mäta hur lättillgängligt dina mönster är.

Vi kommer att gå in mer i detalj på färg plugins i våra senare förbehandling, stenografi och "diverse godis" tutorials.

Bilder och teckensnitt

Denna kategori av plugins hanterar många optimeringsuppgifter, till exempel packning av Base64-data, generering av CSS-spritark och SVG-optimering. Du hittar också flera andra typer av bild- och teckensnittsverktyg, till exempel automatisk SVG-till-PNG-konvertering för IE8, automatisk webbphotoproduktion och inkludering för att stödja webbläsare, @ Font-face genvägar, retina genvägar och mer.

galler

Upptäcka att rutnätverk kan skrivas i PostCSS, utan att behöva ladda förskrivna stylesheets eller använda preprocessor mixins, var det första som verkligen öppnade mina ögon om hur kraftfull PostCSS är. Jag hade tidigare funnit att PostCSS huvudsakligen handlade om att filtrera och ändra befintlig CSS, men gridsystem visar att det kan användas för att skapa hela bibliotek med externa format.

Det finns för närvarande tre nätverkssystem tillgängliga för PostCSS:

  • Förlorad, skapad av Cory Simmons
  • postcss-rutnät, skapad av Andy Jansson
  • postcss-net, skapad av Jo Asakura

optimeringar

PostCSS optimerings plugins faller i två allmänna kategorier: minifiering och kodändring. Genom dessa plugins kan du utföra minifunktionsuppgifter som att avlägsna whitespace och kommentarer, och du kan också ha mer komplexa modifieringar gjorda som att kombinera matchande mediafrågor, inlining @importera stylesheets, optimera typsnitt vikter, tar bort tomma eller dubbla regler och så vidare.

Vi kommer att täcka mer om denna kategori av PostCSS-plugins i den kommande "För Minifiering och Optimering" -handledning.

Genvägar

Som förprocessor användare fann jag alltid att en av de största fördelarna var möjligheten att minska antalet koden som jag var tvungen att skriva igenom med hjälp av variabler och mixins. Genom PostCSS har jag upptäckt ännu mer omfattande sätt att göra kodskrivning effektivare via den långa listan med genvägar och stenografi plugins som är tillgängliga.

Du kan välja att använda stenografi för egenskaper, antingen genom att definiera din egen eller använda befintlig stenografi w istället för breddh istället för höjd och så vidare. Du kan skriva ut @ Font-face koda, omvandla kod, trianglar och cirklar i en rad vardera. Och du kan genväga alla typer av vanliga uppgifter, inklusive länk styling, centrering, clearfixing, positionering, dimensionering, avstånd och utmatning av färgkoder.

Vi kommer att gå in i dessa plugins i djupet i handledningen "Genvägar och stenografi".

Analys & Reportrar

PostCSS kan också användas för mer än att transformera CSS, det kan också användas för att ge feedback när du utvecklar din CSS. Några av de analys- och rapporteringspluggar som finns finns en linter för BEM / SUIT-kod, ett plugin för att ge dig en uppdelning av din kod via CSSstats, "DoIUse" för att låta dig veta hur din kod raderar med data från Kan jag använda, och en Modernizr filgenerator.

Övriga

Det finns några bra PostCSS-plugins som inte passar in i en viss kategori, men är alltför bra för att passera. Till exempel har vi postcss-style-guide som automatiskt genererar en stilguide baserad på din CSS. Det finns också plugin rtlcss, som används av WordPress, vilket genererar en höger till vänsterversion av ditt stylesheet.

Vi täcker några av dessa stora plugins i handledningen "Miscellaneous Goodies".

Roligt

Den "roliga" kategorin innehåller sådana pärlor som postcss-spiffing som låter dig använda UK stavning, till exempel Färg istället för Färg, och välanpassad syntax, såsom !snälla du istället för !Viktig.

Det är osannolikt att du ser någon av de här plugins som används i ett verkligt projekt, men en genuin fördel som de erbjuder är att fungera som lättförståeligt exempel för aspirerande plugin-utvecklare. Att vara ganska enkelt och kortfattat är de perfekta för att ta en titt inuti och se vad som är viktigt för hur PostCSS-plugins görs.

Plugin Execution Sequence

En av de viktigaste övervägandena du måste göra när du laddar upp arrayen av PostCSS-plugins är den ordning i vilken du kör dem. Du måste pausa och tänka igenom din lista och bestämma om en plugin kanske behöver springa efter en annan för att kunna göra vad du vill ha det.

Du kan till exempel använda ett plugin som postcss-simple-vars som lägger till stöd för variabler, och du kan använda den för att lagra en RGBA () värde som så:

/ * källkod * / $ färg: rgba (0, 0, 0, 0,5); .style background: $ color;  / * kompilerar till: * / .style bakgrund: rgba (0, 0, 0, 0,5); 

Du kanske också vill använda ett plugin som postcss-color-rgba-fallback för att lägga till en platt hexcode som en återgång, vilket ger dig:

/ * kompilerar till: * / .style background: # 000; bakgrund: rgba (0, 0, 0, 0,5); 

I det här fallet måste du se till att du körde variabler plugin innan återgångspluggen. 

Om du körde baksidan plugin först skulle det bara hitta bakgrund: $ color; i din CSS och inte vet att det fanns en RGBA () värde för att det ska fungera med.

Men genom att köra variablerna plugin först, när backning plugin körs kommer det att hitta bakgrund: rgba (0, 0, 0, 0,5); och fortsätt och lägg till i önskat fallback.

Belastningsordningen för plugins är något som kommer att ändras med varje uppsättning plugins, så du kan hitta att du bara behöver göra lite experiment ibland för att få allt att fungera bra tillsammans.

Låt oss läsa om

Sammanfattningsvis utforska PostCSS-plugins:

  • Hitta plugins på PostCSS Github repo och postcss.parts
  • Fortsätt med @PostCSS för att lära dig om nya plugins
  • Plug-in-paket kan du installera flera liknande tematillbehör på en gång
  • PostCSS-plugins faller i många, betydligt olika kategorier
  • När du fyller i ditt urval av plugins, var noga med att överväga deras körningsföljd

I nästa handledning

Vi har slutfört vår "Quick Start" -guide till PostCSS och vi är redo att hoppa in i praktiken och börja producera en viss CSS-kod.

I nästa handledning börjar vi med hur man använder PostCSS för att skapa kompatibel kod för korsläsare genom automatisk införande av leverantörs prefix och ett antal fallbacks för egenskaper med äldre webbläsare, i synnerhet IE8.

Vi ses i nästa handledning!