PostCSS Quickstart Guide Gulp Setup

I den siste opplæringen dekket vi hvordan du kan komme i gang med PostCSS umiddelbart ved hjelp av CodePen eller Prepros. Disse alternativene er flotte, men begrensende fordi du ikke får kontroll over hvilke plugins som er tilgjengelige for deg å bruke. 

I denne opplæringen vil vi gå gjennom hvordan du kan bruke PostCSS med oppgaveløperen Gulp, slik at du selv bestemmer hvilke plugins du vil bruke og dermed virkelig tapper inn i plugin-økosystemet.

Merk: Hvis du aldri har jobbet med kommandolinje eller oppgaveløpere før, anbefaler jeg at før du starter denne opplæringen, sjekk ut vår gratis serie: Kommandolinjen for webdesign.

Forutsetninger

Gitt at vi skal jobbe med Gulp, antar vi at du allerede har forutsetningene for bruken sin installert:

  • node.js
  • NPM
  • Git

Hvis du ikke er sikker på at du har disse installert, må du følge veiledningen Kommandolinjen for webdesign: Taming 3parts-pakker som det vil ta deg gjennom å få disse forutsetningene på plass.

Vær også sikker på at du forstår grunnleggende ved bruk av Gulp ved å følge opplæringen. Kommandolinjen for webdesign: Automatisering med Gulp. I tillegg følger instruksjonene i opplæringsprogrammet "Oppsettprosjekt for gulp". Før du går videre, bør du ha en prosjektmappe med:

  • En "gulpfile.js" (Gulpfile) 
  • En "package.json" -fil
  • Gulp installert i mappen "node_modules" og satt som en dev dependence for prosjektet ditt

Grunnleggende Gulp PostCSS Setup

Inne i prosjektmappen din opprett to undermapper, en som heter "src" og en som heter "dest". "Src" -mappen skal holde dine ubehandlede CSS-filer, mens "dest" -mappen vil ha dine PostCSS-behandlede filer skrevet inn i det.

Den neste tingen du trenger å gjøre er å installere plug-in-plugin-modulen i prosjektet ditt - vi bruker dette til å håndtere vår PostCSS-prosessering.

I en terminal / kommandoprompt peket på prosjektmappen din, kjør kommandoen:

npm installere - save-dev gulp-postcss

Etter at installasjonen er fullført, bør prosjektstrukturen se slik ut:

Nå åpner du Gulpfile for redigering og lager variabler for å ringe i både modulene "gulp" og "gulp-postcss" ved å legge til følgende kode:

var gulp = krever ('gulp'); var postcss = krever ('gulp-postcss');

Vi kan nå sette opp en oppgave å lese en kilde CSS-fil og behandle den gjennom PostCSS. 

Legg til følgende:

gulp.task ('css', funksjon () var prosessorer = []; return gulp.src ('./ src / *. css') .pipe (postcss (prosessorer)) .pipe (gulp.dest ('. / dest '));;

La oss bryte ned det vi har i koden ovenfor.

I første linje har vi satt opp en gulp-oppgave som heter css. Denne oppgaven utfører en funksjon, og i den funksjonen har vi opprettet en oppstilling som heter prosessorer. Akkurat nå er arrayen tom, men i et øyeblikk fyller vi det med PostCSS-pluginene vi vil bruke.

Etter prosessorer array vi har angitt filene vi vil målrette mot for behandling: noen CSS-filer i mappen "src".

I den første av de to linjene bruker du rør() funksjon, setter vi inn PostCSS til å utføre via funksjonen postcss (). Som et argument gjennom den funksjonen passerer vi vår prosessorer array, som senere vil fortelle PostCSS hvilke plugins vi vil bruke.

Til slutt, med den andre av de to rør() funksjoner, vi har vår behandlede kode skrevet inn i en ny CSS-fil i vår "dest" -mappe.

Kjør en testkompilering

Gå videre og opprett en ny "style.css" -fil i "src" -mappen din og legg til noen test-CSS på den, for eksempel:

.test bakgrunn: svart; 

Nå i din terminal / kommandoprompt, fremdeles spilt på prosjektmappen din, kjør kommandoen:

gulp css

Dette vil løse oppgaven du bare har installert, og som et resultat bør du nå finne en ny "style.css" -fil i "dest" -mappen din.

Når du åpner denne nye filen, ser du den samme koden i den som i kildefilen din. Koden er ikke endret fordi vi ikke har brukt noen PostCSS-plugins ennå, og som du vil vite fra en tidligere opplæring, er det pluginene som utfører de faktiske CSS-manipulasjonene.

Legg til PostCSS plugins

Vi legger nå et utvalg av PostCSS-plugins og -pakker: Autoprefixer (legger til leverandørprefikser), cssnext (aktiverer fremtidig syntaks) og press (strekker seg med Sass-lignende funksjonalitet).

Kjør følgende kommandoer for å installere hvert plugin i prosjektet ditt:

npm installere autoprefixer - save-dev npm installere cssnext --save-dev npm installere precss - save-dev

Merk: Den cssnext og precss installasjoner kan ta litt tid da de er pakker med flere plugins.

Deretter definerer vi variabler for å laste inn hver enkelt i vårt prosjekt. Legg til følgende kode under de to eksisterende variablene øverst i Gulpfile:

var autoprefixer = krever ('autoprefixer'); var cssnext = krever ('cssnext'); var precss = krever ('press');

Da legger vi til disse tre pluginene til prosessorer array i vår gulp-oppgave. Oppdater oppsettet til følgende:

 var prosessorer = [autoprefixer, cssnext, precss];

Med de tre plugins som er lagt til vår prosessor array, vil PostCSS vite at vi ønsker å søke hver til vår kilde CSS.

Vi er nå klare til å legge til noen testkode i filen "src / style.css" og sjekke at alt fungerer. Slett det du allerede har i filen, og legg til dette CSS i stedet:

/ * Testing autoprefixer * / .autoprefixer display: flex;  / * Testing cssnext * / .cssnext bakgrunn: farge (rød alfa (-10%));  / * Prøving av prese * / .precss @if 3 < 5  background: green;  @else  background: blue;  

Kjør gulp css kommandoen igjen nå, og den resulterende filen i "dest" -mappen din skal ha følgende innhold:

/ * Testing autoprefixer * / .autoprefixer display: -webkit-box; display: -webkit-flex; display: -ms-flexbox; display: flex;  / * Testing cssnext * / .cssnext bakgrunn: rgba (255, 0, 0, 0,9);  / * Prøveprøve * / .precss bakgrunn: grønn

Som i det ovenstående, bør du se leverandørprefikser er lagt til i første klasse av Autoprefixer, an RGBA () fargen har blitt utgitt av cssnext i andre klasse, og @if @else sjekk har blitt vurdert av PreCSS i tredje klasse.

Angir pluginalternativer

Merk: Hvis du vil konfigurere alternativer for et plugin, legger du til et par braketter etter navnet i preprosessorsystemet og sender alternativene der. For eksempel kan du angi nettleserlisten du vil at Autoprefixer skal fungere som:

 var prosessorer = [autoprefixer (nettlesere: ['siste 1 versjon']), cssnext, press];

Dele prosjektet ditt

Skjønnheten i PostCSS er i sin evne til å bli konfigurert med en hvilken som helst kombinasjon av plugins. Utfordringen dette bringer frem, er imidlertid å sikre at andre som ønsker å jobbe med et prosjekt, har samme oppsett av PostCSS-plugins. Takket være npm håndteres denne utfordringen gjennom sitt system for avhengighetsstyring.

Fordi du bruker --save-dev flagg hver gang du installerer et plugin i prosjektet ditt, vil det bli lagt til din "project.json" -fil som en dev dependence. Dette betyr at hvis du vil dele prosjektet med andre, kan de kjøre kommandoen npm installasjon På pakken deler du med dem og har alle de samme pluginene automatisk installert.

For å lære mer om hvordan avhengighetsadministrasjon fungerer med NPM, sjekk opp veiledningen Kommandolinjen for webdesign: Taming 3partspakker.

La oss gjenskape

For å oppsummere ovenstående:

  • Opprett et npm prosjekt med Gulp installert og en Gulpfile innsiden
  • Installer gulp-postcss plugin
  • Oppsett Gulpfile for å laste inn gulp og gulp-postcss plugins
  • Lag en gulp-oppgave for å kompilere CSS
  • Innen oppgaven skal du sette opp a prosessorer matrise
  • Rør din kilde CSS gjennom postcss () funksjon, med prosessorer array passert som et argument

Derfra kan du følge de samme viktige trinnene for å aktivere et PostCSS-plugin i prosjektet ditt:

  • Installer pluginet i prosjektet ditt med 
    npm installasjon --save-dev
  • Definer en variabel for å laste inn pluginet i din Gulpfile f.eks. 
    var autoprefixer = krever ('autoprefixer');
  • Legg til det variabelnavnet i din preprocessors matrise.

Sjekk ut Github repo for startfiler og fullførte eksempler.

Kommer opp neste: Grunt + PostCSS

I neste veiledning vil vi dekke hvordan du konfigurerer et PostCSS-prosjekt i den andre av de to store oppgavene: Grunt. Ser deg der!