PostCSS-snelstartgids Gromde opstelling

In de laatste zelfstudie hebben we besproken hoe een PostCSS-project met Gulp kan worden opgezet. In deze tutorial bereiken we dezelfde doelen door Grunt te gebruiken. Aan het einde van deze tutorial zul je weten hoe je een PostCSS + Grunt-project opzet met elke selectie van plug-ins die je kiest.

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 Grunt werken, gaan we ervan uit dat je al de vereisten hebt voor het gebruik dat is geïnstalleerd:

  • Node.js
  • NPM
  • Git

Als u niet zeker weet of u deze hebt geïnstalleerd, volgt u de tutorial. De opdrachtregel voor webontwerp: het beheren van pakketten van derden.

Zorg ervoor dat u Grunt CLI wereldwijd hebt geïnstalleerd en begrijp het basisgebruik ervan door de opdrachtregel voor webontwerp te volgen: Automation with Grunt. Volg daarnaast de instructies in het gedeelte "Setup Project for Grunt" van de zelfstudie. Voor je verder gaat, zou je een projectmap moeten hebben met:

  • Een "gruntfile.js" (Gruntfile)
  • Een "package.json" -bestand
  • Grunt geïnstalleerd in de map "node_modules" en ingesteld als een dev-afhankelijkheid voor uw project.

PostCSS via Grunt

Voeg in je projectmap twee submappen toe, een met de naam "src" en de andere met de naam "dest". In de map "src" worden uw onbewerkte CSS-bestanden bewaard en PostCSS zal uw gecompileerde CSS-bestanden in de map "dest" schrijven.

Het volgende dat u moet doen, is de Grunt-plug-in voor PostCSS in uw project installeren: we zullen grunt-postcss gebruiken om met de compilatie om te gaan.

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

npm install grunt-postcss --save-dev

Op dit punt zou uw projectstructuur er als volgt uit moeten zien:

Open je Gruntfile voor bewerking en begin met het toevoegen van de basishell van code die alle Gruntfiles nodig hebben:

module.exports = functie (grunt) ;

Daarbinnen gaan we de gebruiken grunt.loadNpmTasks () functie om te laden in onze grunt-postcss plugin zoals zo:

module.exports = functie (grunt) grunt.loadNpmTasks ('grunt-postcss'); ;

Nu zijn we klaar om te beginnen met het configureren van de Grunt-taak die we zullen gebruiken om postcss uit te voeren. Voeg eerst de grunt.initConfig () functie boven de regel die we zojuist hebben toegevoegd:

module.exports = functie (grunt) grunt.initConfig (); grunt.loadNpmTasks ( 'grunt-postcss); ;

Daarbinnen, stel een object in met de naam postcss zoals zo:

module.exports = functie (grunt) grunt.initConfig (postcss: ); grunt.loadNpmTasks ( 'grunt-postcss); ;

In het nieuwe postcss object zullen we nog twee geneste objecten toevoegen, één met een naam opties en een met de naam dist:

module.exports = functie (grunt) grunt.initConfig (postcss: options: , dist: ); grunt.loadNpmTasks ( 'grunt-postcss); ;

De opties object bevat de configuratie voor PostCSS en de dist object bevat informatie over waar onze CSS-bestanden moeten worden gelezen van en geschreven naar.

Ga nu verder en maak een CSS-bestand met de naam "style.css" in de map "src" van uw project. Voeg wat testcode toe, zoals:

.test achtergrond: zwart; 

Werk nu het dist object om "src / style.css" als ons bronbestand op te geven, en "dest / style.css" als het bestand dat we willen genereren:

 dist: src: 'src / style.css', dest: 'dest / style.css'

Vervolgens, binnen de opties object, voeg een lege array toe met de naam processors. Dit is waar we PostCSS-plug-ins voor iets later zullen configureren. Werk het nu bij tot:

 opties: processors: [],

Voer een test compilatie uit

Je basis postcss taak is nu klaar voor gebruik. Om het uit te testen, met uw terminal / opdrachtprompt nog steeds gericht op uw projectmap, voert u de opdracht uit:

grunt postcss

In uw terminal zou u dit bericht moeten zien:

Running "postcss: dist" (postcss) taak >> 1 bewerkte stylesheet aangemaakt.

En nu zou je in je "dest" map een nieuw "style.css" bestand moeten vinden, dat dezelfde code bevat als het "style.css" bestand in je "src" map.

PostCSS-invoegtoepassingen toevoegen

Vervolgens zullen we een selectie van PostCSS-plug-ins en -pakketten toevoegen: Autoprefixer (voegt voorvoegsel van leverancier toe), cssnext (schakelt toekomstige syntaxis in) en precss (wordt uitgebreid met Sass-achtige functionaliteit).

Voer de volgende opdrachten uit om elke opdracht 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.

Nu zijn we klaar om alle plug-ins te laden via de processors array die we eerder hebben gemaakt. Werk die array bij naar het volgende:

 processors: [require ('autoprefixer') (), require ('cssnext') (), require ('precss') ()]

Laten we nu beginnen met het toevoegen van een aantal testcode aan ons bron "style.css" -bestand en controleren of onze nieuw ingestelde PostCSS-plug-ins werken zoals verwacht. 

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 grunt postcss 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

Je zult het zien in de .autoprefixer klassenvoorvoegsels van leveranciers zijn toegevoegd door Autoprefixer. In de .cssnext klas, een RGBA () kleur is gegenereerd door cssnext. En tot slot in de .precss klas, de @if @else Voorwaardelijk is geëvalueerd door PreCSS.

Opties voor invoegtoepassingen instellen

Opmerking: als u opties voor een plug-in wilt configureren, geeft u uw opties door tussen het tweede paar haakjes na de vereisen() functie voor die plug-in. U kunt bijvoorbeeld de browselijst opgeven die u met Autoprefixer wilt laten werken, zoals:

 processors: [require ('autoprefixer') (browsers: ['last 1 version']), require ('cssnext') (), require ('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

Samenvattend van alles wat hierboven is behandeld:

  • Maak een npm-project met Grunt geïnstalleerd en een Grunt-bestand erin
  • Installeer de plug-in voor grunt-postcss
  • Stel je Gruntfile-shell in en laadt grunt-postcss met grunt.loadNpmTasks ( 'grunt-postcss);
  • Maak een grunt-taak om uw CSS te compileren
  • Maak binnen de taak een opties object met een processors rangschikking
  • Voer ook, binnen de taak, een dist object dat uw bronbestanden en de bestemming voor gecompileerde bestanden opgeeft

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
  • Voeg die variabelenaam toe aan uw preprocessors array met de functie require ()
    vereisen('') ().

Bekijk de Github-repo voor startersbestanden en voltooide voorbeelden.

Volgende: Verkennen van plug-ins

Nu weet u hoe u Gulp of Grunt moet gebruiken om PostCSS te gebruiken met elke plug-in die u kiest. Het volgende dat je nodig hebt is een manier om het PostCSS-plugin-ecosysteem te verkennen en geweldige plug-ins te vinden die perfect zijn voor het soort projecten dat je wilt maken.

We zullen precies zien hoe je dat kunt doen in de volgende tutorial; "Snelstartgids: Plug-ins verkennen".