PostCSS-snelstartgids Gulp-instellingen

In de laatste zelfstudie hebben we besproken hoe u direct kunt beginnen met PostCSS met CodePen of Prepros. Deze opties zijn geweldig, maar beperkend omdat u niet kunt bepalen welke plug-ins voor u beschikbaar zijn. 

In deze zelfstudie bespreken we hoe u PostCSS kunt gebruiken met de taak loper Gulp, zodat u zelf kunt beslissen welke plug-ins u wilt gebruiken en dus echt het plugin-ecosysteem kunt gebruiken.

Notitie: Als je nog nooit met een opdrachtregel of taakgroep hebt gewerkt, raad ik je aan om voordat je aan deze zelfstudie begint onze gratis reeks te bekijken: De opdrachtregel voor webontwerp.

voorwaarden

Aangezien we met Gulp werken, gaan we ervan uit dat je al de vereisten hebt voor het gebruik van Gulp:

  • Node.js
  • NPM
  • Git

Als u niet zeker weet of u deze hebt geïnstalleerd, volgt u de tutorial De opdrachtregel voor webontwerp: derde-partijpakketten temmen omdat u door deze voorwaarden moet komen.

Zorg er ook voor dat u de basisprincipes van Gulp-gebruik begrijpt door de zelfstudie te volgen. De opdrachtregel voor webontwerp: automatisering met Gulp. Volg daarnaast de instructies in het gedeelte "Setup Project for Gulp" van de zelfstudie. Voor je verder gaat, zou je een projectmap moeten hebben met:

  • Een "gulpfile.js" (Gulpfile) 
  • Een "package.json" -bestand
  • Gulp is geïnstalleerd in de map "node_modules" en is ingesteld als een dev-afhankelijkheid voor uw project

Basic Gulp PostCSS Setup

In uw projectmap maakt u twee submappen, de ene met de naam "src" en de andere met de naam "dest". In de map "src" worden uw onbewerkte CSS-bestanden bewaard, terwijl in de map "dest" de door PostCSS verwerkte bestanden erin worden geschreven.

Het volgende dat u moet doen is de gulp-postcss-plug-in in uw project installeren - we zullen dit gebruiken om onze PostCSS-verwerking aan te pakken.

Voer de opdracht uit in een terminal / opdrachtprompt die naar uw projectmap verwijst:

npm install --save-dev gulp-postcss

Nadat de installatie is voltooid, ziet uw projectstructuur er als volgt uit:

Open nu uw Gulpfile voor bewerking en maak variabelen om zowel de "gulp" - als de "gulp-postcss" -modules op te roepen door de volgende code toe te voegen:

var gulp = vereisen ('gulp'); var postcss = require ('gulp-postcss');

We kunnen nu een taak instellen om een ​​bron-CSS-bestand te lezen en het via PostCSS te verwerken. 

Voeg het volgende toe:

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

Laten we opsplitsen wat we hebben in de bovenstaande code.

In de eerste regel hebben we een sliktaak ingesteld met de naam css. Deze taak voert een functie uit en binnen die functie hebben we een array met de naam gemaakt processors. Op dit moment is die array leeg, maar in een oogwenk vullen we dat aan met de PostCSS-plugins die we willen gebruiken.

Na de processors array we hebben de bestanden gespecificeerd die we willen targeten voor verwerking: alle CSS-bestanden in de map "src".

In de eerste van de twee regels met behulp van de pijp() functie, stellen we PostCSS in om uit te voeren via de functie postcss (). Als een argument door die functie passeren we onze processors array, die later PostCSS zal vertellen welke plug-ins we willen gebruiken.

Eindelijk, met de tweede van de twee pijp() functies, we hebben onze verwerkte code geschreven in een nieuw CSS-bestand in onze "dest" -map.

Voer een test compilatie uit

Ga je gang en maak een nieuw "style.css" bestand aan in je "src" map en voeg wat test CSS toe zoals:

.test achtergrond: zwart; 

Plaats nu in de terminal / opdrachtprompt, nog steeds gewezen op uw projectmap, de opdracht:

slok css

Dit zal de taak uitvoeren die u zojuist hebt ingesteld, en als gevolg hiervan zou u nu een nieuw "style.css" bestand in uw "dest" map moeten vinden.

Wanneer u dit nieuwe bestand opent, ziet u een identieke code in die van uw bronbestand. De code is niet veranderd omdat we nog geen PostCSS-plug-ins hebben gebruikt en zoals u uit een eerdere zelfstudie zult weten, zijn het de plug-ins die de feitelijke CSS-manipulaties uitvoeren.

PostCSS-invoegtoepassingen toevoegen

We voegen nu een selectie van PostCSS-plug-ins en -pakketten toe: Autoprefixer (voegt voorvoegsels van leveranciers toe), cssnext (schakelt toekomstige syntaxis in) en precss (wordt uitgebreid met Sass-achtige functionaliteit).

Voer de volgende opdrachten uit om elke plug-in in uw project te installeren:

npm install autoprefixer --save-dev npm install cssnext --save-dev npm install precss --save-dev

Notitie: De cssnext en precss installaties kunnen een tijdje duren, want het zijn pakketten met meerdere plug-ins.

Vervolgens zullen we variabelen definiëren om in elk project in ons project te laden. Voeg de volgende code toe onder de twee bestaande variabelen bovenaan uw Gulpfile:

var autoprefixer = require ('autoprefixer'); var cssnext = require ('cssnext'); var precss = require ('precss');

Vervolgens voegen we deze drie plug-ins toe aan de processors array in onze sliktaak. Werk de array bij naar het volgende:

 var processors = [autoprefixer, cssnext, precss];

Met de drie plug-ins die aan onze array met processoren zijn toegevoegd, weet PostCSS dat we elk een toepassing willen toepassen op onze bron-CSS.

We zijn nu klaar om een ​​aantal testcode toe te voegen aan ons "src / style.css" -bestand en controleren dat alles werkt. Verwijder wat je al hebt in het bestand en voeg in plaats daarvan deze CSS toe:

/ * Autoprefixer * / .autoprefixer testen weergave: flex;  / * Testen cssnext * / .cssnext background: color (red alpha (-10%));  / * Testen precss * / .precss @if 3 < 5  background: green;  @else  background: blue;  

Voer de ... uit slok css opnieuw commando, en het resulterende bestand in uw "dest" -map zou de volgende inhoud moeten hebben:

/ * Autoprefixer * / .autoprefixer testen display: -webkit-box; weergave: -webkit-flex; weergave: -ms-flexbox; weergave: flex;  / * Testen cssnext * / .cssnext background: rgba (255, 0, 0, 0.9);  / * Press testen * / .precss background: green

Zoals hierboven vermeld, zou u moeten zien dat voorvoegsels van leveranciers aan de eerste klasse zijn toegevoegd door Autoprefixer, een RGBA () kleur is uitgevoerd door cssnext in de tweede klasse, en de @if @else controle is geëvalueerd door PreCSS in de derde klas.

Opties voor invoegtoepassingen instellen

Notitie: als u opties voor een plug-in wilt configureren, voegt u na de naam in de reeks van preprocessors een paar haakjes toe en geeft u de opties daar door. U kunt bijvoorbeeld de browselijst opgeven die u met Autoprefixer wilt laten werken, zoals:

 var processors = [autoprefixer (browsers: ['last 1 version']), cssnext, precss];

Uw project delen

Het mooie van PostCSS is dat het kan worden geconfigureerd met elke combinatie van plug-ins. De uitdaging die dit met zich meebrengt, is echter ervoor zorgen dat andere mensen die aan een project willen werken dezelfde PostCSS-plug-ins hebben. Dankzij npm wordt deze uitdaging aangepakt via het systeem van afhankelijkheidsbeheer.

Omdat u de --save-dev markeer elke keer dat u een plug-in in uw project installeert deze als een dev-afhankelijkheid aan uw "project.json" -bestand. Dit betekent dat als u uw project met anderen wilt delen, zij het commando kunnen uitvoeren npm installeren op het pakket dat u met hen deelt en hebben alle dezelfde plug-ins automatisch geïnstalleerd.

Voor meer informatie over hoe afhankelijkheidsbeheer werkt met NPM, raadpleegt u de zelfstudie De opdrachtregel voor webontwerp: derde-partijpakketten temmen.

Laten we samenvatten

Om het bovenstaande samen te vatten:

  • Maak een npm-project met Gulp geïnstalleerd en een Gulpfile binnenin
  • Installeer de gulp-postcss-plug-in
  • Stel uw Gulpfile in om de gulp- en gulp-postcss-plug-ins te laden
  • Maak een slordige taak om uw CSS te compileren
  • Voer binnen de taak een processors rangschikking
  • Leid je bron-CSS door de postcss () functie, met de processors array doorgegeven als een argument

Van daaruit kunt u dezelfde essentiële stappen volgen om elke PostCSS-plug-in in uw project in te schakelen:

  • Installeer de plug-in in uw project met 
    npm installeren --save-dev
  • Definieer een variabele om de plug-in in uw Gulpfile te laden, bijvoorbeeld. 
    var autoprefixer = require ('autoprefixer');
  • Voeg die variabelenaam toe aan uw preprocessors rangschikking.

Bekijk de Github-repo voor startersbestanden en voltooide voorbeelden.

Komende volgende: Grom + PostCSS

In de volgende zelfstudie bespreken we hoe een PostCSS-project kan worden opgezet in de andere grote taakgroep: Grunt. Zie je daar!