PostCSS Quickstart Guide Grunt Setup

I den siste opplæringen gikk vi gjennom hvordan du oppretter et PostCSS-prosjekt med Gulp. I denne opplæringen vil vi oppnå samme mål, ved å bruke Grunt. Ved slutten av denne opplæringen vet du hvordan du konfigurerer et PostCSS + Grunt-prosjekt med et utvalg av plugins du velger.

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

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

  • node.js
  • NPM
  • Git

Hvis du ikke er sikker på om du har installert disse, følger du veiledningen Kommandolinjen for webdesign: Taming 3partspakker.

Sørg for at du har Grunt CLI installert globalt og forstå grunnleggende bruk ved å følge kommandolinjen for webdesign: Automatisering med Grunt. I tillegg følger instruksjonene i opplæringsprogrammet "Oppsettprosjekt for grunt". Før du går videre, bør du ha en prosjektmappe med:

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

PostCSS via Grunt

I prosjektmappen legges to undermapper, en som heter "src" og den andre som heter "dest". "Src" -mappen vil holde dine ubehandlede CSS-filer, og PostCSS vil skrive dine kompilerte CSS-filer inn i "dest" -mappen.

Den neste tingen du trenger å gjøre er å installere Grunt-pluginet for PostCSS i prosjektet ditt: Vi bruker grunt-postcss til å håndtere kompilering.

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

npm installere grunt-postcss - save-dev

På dette punktet bør prosjektstrukturen se slik ut:

Åpne Gruntfile for redigering og start med å legge til grunnskjellet av kode som alle Gruntfiles krever:

module.exports = funksjon (grunt) ;

Innenfor, skal vi bruke grunt.loadNpmTasks () funksjon å laste inn i vår grynt-postcss Plugin slik:

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

Nå er vi klare til å begynne å konfigurere Grunt-oppgaven vi skal bruke til å kjøre postcss. Først legger du til grunt.initConfig () fungere over linjen vi nettopp har lagt til:

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

Inne i det, sett opp et objekt som heter postcss som så:

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

Inne i det nye postcss objekt vi legger til to flere nestede objekter, en som heter opsjoner og en som heter dist:

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

De opsjoner objektet vil holde konfigurasjonen for PostCSS, og dist objektet vil holde informasjon om hvor våre CSS-filer skal leses fra og skrevet til.

Gå videre nå og opprett en CSS-fil med navnet "style.css" i prosjektets "src" -mappe. Legg til noen testkoden til den, for eksempel:

.test bakgrunn: svart; 

Oppdater nå dist motsette seg å angi "src / style.css" som vår kildefil, og "dest / style.css" som filen vi vil generere:

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

Deretter inne i opsjoner objekt, legg til en tom array som heter prosessorer. Det er her vi skal konfigurere PostCSS-plugins for bruk litt senere. For øyeblikket, oppdater det bare til:

 alternativer: prosessorer: [],

Kjør en testkompilering

Din grunnleggende postcss oppgaven er nå klar til å gå. For å teste det, kjører du kommandoen med din terminal / kommandoprompt fremdeles på prosjektmappen din:

grunt postcss

I terminalen din bør du se denne meldingen:

Running "postcss: dist" (postcss) oppgave >> 1 behandlet stilark opprettet.

Og nå i "dest" -mappen din, bør du finne en ny "style.css" -fil som inneholder samme kode som "style.css" -filen i mappen "src".

Legg til PostCSS plugins

Deretter legger vi til et utvalg av PostCSS plugins og pakker: Autoprefixer (legger til leverandør prefiks), cssnext (aktiverer fremtidig syntaks) og press (strekker seg med Sass liker funksjonalitet).

Kjør følgende kommandoer for å installere hver enkelt 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.

Nå er vi klare til å laste hver plugin via prosessorer array vi opprettet tidligere. Oppdater oppsettet til følgende:

 prosessorer: [krever ('autoprefixer') (), krever ('cssnext') (), krever ('precss') ()]

La oss fortsette nå legg til noen testkode til vår kilde "style.css" -fil og kontroller at våre nylig opprettede PostCSS-plugins fungerer som forventet. 

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

Du vil se i .autoprefixer klasse, leverandør prefiks har blitt lagt til av Autoprefixer. I .cssnext klasse, an RGBA () fargen er generert av cssnext. Og til slutt i .precss klasse, den @if @else betinget har blitt vurdert av PreCSS.

Angir pluginalternativer

Merk, hvis du vil konfigurere alternativer for et plugin, send dine alternativer gjennom det andre paret parentes etter kreve () funksjon for det pluginet. For eksempel kan du angi nettleserlisten du vil at Autoprefixer skal fungere som:

 prosessorer: [krever ('autoprefixer') (nettlesere: ['siste 1 versjon']), krever ('cssnext') (), krever ('precss')

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

I sammendrag av alt som er dekket over:

  • Opprett et npm-prosjekt med Grunt installert og en Gruntfile innsiden
  • Installer grunt-postcss plugin
  • Oppsett Gruntfile-skallet, laster grunt-postcss med grunt.loadNpmTasks ( 'grov-postcss');
  • Lag en grunt oppgave å kompilere CSS
  • Innen oppgaven skal du sette opp en opsjoner objekt som inneholder a prosessorer matrise
  • Også innenfor oppgaven, oppsett a dist objekt angi kildefiler og destinasjon for kompilerte filer

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
  • Legg til det variabelnavnet i din preprocessors array ved hjelp av require () -funksjonen
    kreve ('') ().

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

Opp Neste: Exploring Plugins

Nå vet du hvordan du bruker enten Gulp eller Grunt til å bruke PostCSS med alle plugins du velger. Den neste tingen du trenger, er en måte å utforske PostCSS-plugin-økosystemet og finne gode plugins som er perfekte for hva slags prosjekter du vil lage.

Vi går gjennom nøyaktig hvordan du kan gjøre det i neste opplæring; "Quickstart Guide: Exploring Plugins".