Bruke Gulp for WordPress Automation

I denne artikkelen vil du se hvordan du kan bruke gulp til å automatisere flere oppgaver du vanligvis gjør for hånd eller som du stoler på verktøy utviklet av andre.

Hva er Gulp

Gulp er et streaming-bygningssystem. Du har kanskje hørt om og brukt grunt allerede. Men i det siste blir gulpen mer populær. Det kan gjøre fantastiske ting som å samle LESS / SASS, JS-filer, live reloading nettsider og mye mer.

Hvorfor bruk Gulp

Det kan spare deg mye tid ved å automatisere flere oppgaver. Og det beste er at du har muligheten til å fortelle det hva du skal gjøre, i motsetning til å stole på tredjepartsverktøy for å implementere visse funksjoner. Kort sagt, du kan bygge ditt eget automatiseringsverktøy i henhold til dine behov.

Forutsetninger

For å komme i gang må du ha Node.js (v0.10.30 eller høyere) installert. Jeg foretrekker å bruke Node Version Manager (NVM) slik at jeg kan bytte mellom forskjellige versjoner av Node.js på min utviklingsmaskin.

La oss komme i gang

Det første du må gjøre er å installere gulp. Bruk følgende kommando fra terminal for å gjøre det.

npm install-g gulp

Dette vil installere gulp globalt på maskinen din.

La oss begynne å sette opp automatiseringsverktøyet ved å lage en katalog i WordPress-temaer-mappen eller ønsket sted du vil ha.

I mitt tilfelle vil jeg navigere til tema-mappen ...

cd ... / wp-innhold / temaer

... og kjør følgende kommando.

mkdir wp-gulp-automasjon

Nå skal jeg navigere til mappen for å starte en NPM prosjekt.

cd wp-gulp-automation npm init

Dette vil stille deg flere spørsmål som prosjektnavn, versjon, beskrivelse, forfatter, lisens, osv.

Du kan enten fylle dem inn eller fortsette å treffe Tast inn til det står ja. Til slutt skriver du ja og treffer Tast inn en gang til.

Dette vil opprette en package.json-fil i katalogen. Den inneholder informasjon om ditt prosjekt og dets avhengigheter.

Hvis du har fulgt prosessen riktig, ser filen pack.json ut slik:

"navn": "wp-gulp-automation", "versjon": "1.0.0", "beskrivelse": "", "main": "index.js", "scripts": "test" ekko \ "Feil: ingen test angitt \" && avslutte 1 "," Forfatter ":" "," Lisens ":" ISC "

Første Gulp-fil

Installer gulp lokalt til prosjektet ditt.

npm installer gulp - save-dev

Dette vil skape en node_modules mappe og beholde alle dine prosjektavhengigheter der inne. --save-dev er vant til å oppdatere dev-avhengig i package.json.

Opprett gulpfile.js i prosjektkatalogen med følgende kode.

var gulp = krever ('gulp'); gulp.task ('standard', funksjon () console.log ('standard gulp-oppgave ...'));

I terminaltypen gulp og traff Tast inn. Du vil se at teksten ovenfor er logget inn i konsollen.

Opprette et grunnleggende Sass-kompileringsverktøy

Det finnes ulike gulp plugins tilgjengelig for Sass kompilering. Jeg har prøvd og oppført tre av dem nedenfor.

  1. gulp-sass (enkel og enkel å bruke)
  2. gulp-kompass (fungerer bra med kompass-baserte prosjekter)
  3. gulp-ruby-kompass (denne gir mer kontroll enn de to andre)

For enkelhets skyld, i denne opplæringen vil jeg bruke den første, det er gulp-sass.

Kjør følgende kommando i prosjektkatalogen for å installere den.

npm installer gulp-sass - save-dev

Lar oppdatering koden for å kompilere Sass-filer i CSS-filer.

Legg til krever på toppen av gulpfile.

var sass = krever ('gulp-sass'); gulp.task ('sass', funksjon () gulp.src ('./ css / src / * .scss') .pipe (sass ()) .pipe (gulp.dest ('./ css')); ); gulp.task ('standard', ['sass']);

Nå når jeg løper gulp sass i terminalen blir sassoppgaven avfyrt.

Og fordi jeg har lagt den til en rekke standardoppgaver, når jeg kjører gulp i terminal, brenner standardoppgaven opp sass-oppgaven.

Hva dette vil gjøre er å kompilere alle filene i css / src mappe av prosjektet og lagre dem til css mappe. Du vil kanskje sende ekstra alternativer til sass () funksjon avhengig av dine behov.

Så i utgangspunktet kjører gulp og gulp sass vil gjøre det samme på dette tidspunktet.

Lint og Compile JS Files

Neste, for å få bedre og pakket JavaScript-kode i temaene dine, trenger du gulp-jshint og gulp-concat.

npm installer gulp-jshint - save-dev npm installer gulp-concat - save-dev

Legg nå til på toppen av gulpfile:

var jshint = krever ('gulp-jshint'); var concat = krever ('gulp-concat');

Legg til følgende gulp-oppgave i filen til lint og kombiner alle js-filer.

gulp.task ('js', funksjon () gulp.src ('js / src / *. js') .pipe (jshint ()) .pipe (jshint.reporter ('fail')) 'theme.js')). pip (gulp.dest ('js')););

Hvis du vil organisere litt mer, kan du ha selger og tema mapper inni JS / src. De selger mappen inneholder alle tredjepartsbiblioteker, for eksempel jQuery plugins, og tema mappen inneholder ditt eget temas JavaScript-kode.

Hvis du vil redusere dem også, kan du inkludere svelge-uglify plugg inn. Og la oss oppdatere standardoppgaven vår til å:

gulp.task ('standard', ['sass', 'js']);

Optimaliser bilder

Den mest brukte gulp plugin for denne oppgaven er gulp-imagemin. Installer den ved å bruke:

npm installer gulp-imagemin - sav-dev

Legg til krav jafs-imagemin på toppen:

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

Og legg til følgende oppgave i gulpfilen.

gulp.task ('img', funksjon () gulp.src ('img / src / *. png, jpg, gif') .pipe (imagemin (optimaliseringLevel: 7, progressiv: sann)) (gulp.dest ('img')));

Hva dette vil gjøre, er å lage en optimalisert kopi av alle bildene som er plassert i img / src katalog inn i img katalog.

Legg det til i standardoppgavelisten.

gulp.task ('standard', ['sass', 'js', 'img']);

Se oppgave

Neste er å sette opp et klokke for automatiseringsoppgaver.

gulp.task ('watch', funksjon () gulp.watch ('css / src / * .scss', ['sass']); gulp.watch ('js / src / * .js' ']); gulp.watch (' img / src / *. png, jpg, gif ', [' img ']););

Hvis du legger til det i standardoppgavelisten, får du oss:

gulp.task ('standard', ['sass', 'js', 'img', 'watch']);

Feilhåndtering

Hva skjer hvis det oppstår en feil mens du kjører en av oppgavene våre? Gulpfilen din slutter å løpe.

For å håndtere det, la oss bruke en fin gulp-plugin kalt gulp-plumber. Vi vil også bruke gulp-notify for å vise gode grøntlevelser om feil.

Installere jafs-rørlegger og svelge-varsle ved hjelp av:

npm installer gulp-rørlegger - save-dev npm installer gulp-notify --save-dev

Igjen krever dette på toppen av gulpfile.

Var rørlegger = krever ('gulp-rørlegger'); var notify = require ('gulp-notify');

Her er en praktisk rørleggerinnstilling som jeg vil bruke når det oppstår en feil i noen av oppgavene.

var plumberErrorHandler = errorHandler: notify.onError (title: 'Gulp', melding: 'Feil: <%= error.message %>');

Nå er vår oppdatert sass oppgaven vil se ut som:

gulp.task ('sass', funksjon () gulp.src ('./css / src / * .scss') .pipe (rørlegger (plumberErrorHandler)). pipe (sass ()) .pipe (gulp.dest './css')));

Legg merke til plumberErrorHandler la til. På samme måte vil jeg legge til dette i js og img oppgaver.

Live Reload

En viktig ting som trengs er live reload-funksjonalitet.

Først av alt installerer du en nettleserutvidelse / tillegg for live reload:

  • Chrome-utvidelse
  • Firefox addon

Nå må du installere gulp-livereload ved å bruke:

npm installer gulp-liveraload - save-dev

En gang til legger du det til toppen der du trenger i gulpfile.

var leverenlast = krever ('gulp-livereload');

Lar oppdatere våre oppgaver for å inkludere live reload nå.

De sass oppgaven vil se slik ut:

gulp.task ('sass', funksjon () gulp.src ('./css / src / * .scss') .pipe (rørlegger (plumberErrorHandler)). pipe (sass ()) .pipe (gulp.dest './css')) .pipe (livereload ()););

Tilsvarende legg til livereload til js og img oppgaver. En ting du må gjøre er å legge til livereload.listen (); i begynnelsen av klokkeoppgaven.

gulp.task ('watch', funksjon () livereload.listen (); gulp.watch ('css / src / * .scss', ['sass']); gulp.watch ('js / src / *. js ', [' js ']); gulp.watch (' img / src / *. png, jpg, gif ', [' img ']););

For å teste livereload, la oss lage en index.php-fil med følgende kode.

      

hei fra gulp automatisering verktøyet

Og en stil.css.

/ * Tema navn: Tutsplus gulp wp automation Tema URI: http://tutsplus.com Beskrivelse: Automatiserer Wordpress utviklings arbeidsflyt. Forfatter: Atinder Singh Forfatter URI: http://tutsplus.com Versjon: 1.4.1 Lisens: GNU General Public License v2 eller nyere Lisens URI: http://www.gnu.org/licenses/gpl-2.0.html * /

Aktiver nå dette temaet fra WordPress dashboard. Du har ditt grunnleggende miljø satt opp og klar til å rocke. Løpe gulp i terminal, og se det aktiverte temaet i nettleseren din. Klikk på oppdateringen for live reload slik at live reload-serveren blir tilkoblet, og lytt til endringene.

Når du endrer filens innhold i css / src eller JS / src, Gulp vil overvåke og kompilere filene og laste inn nettleseren din.

Litt avanserte ting

Nå har du et verktøy som kan brukes til å lage flere temaer, så la oss flytte temafilene til en annen mappe i wp-content / themes / wp-jafs-automasjon / tema-standardtekst katalog.

Kopier index.php og style.css filer og css, img og js mapper til tema-standardtekst.

Dette er en veldig grunnleggende tema-boilerplate. Du kan utvide dette eller bruke den du liker.

For denne siste oppgaven trenger du tre Node.js-moduler. Installer json-fil, node-fs og fs-ekstra.

npm installere json-fil - save-dev npm installeringsnode-fs --save-dev npm installere fs-extra - save-dev

Krev dem på toppen av din gulpfile.

var fs = krever ('node-fs'); var fse = krever ('fs-ekstra'); var json = krever ('json-fil'); var themeName = json.read ('./ package.json'). få ('temanavn'); var themeDir = '... /' + themeName;

Legg til denne oppgaven i din gulpfile.

gulp.task ('init', funksjon () fs.mkdirSync (themeDir, 765, true); fse.copySync ('theme-boilerplate', themeDir + '/'););

Hva du kan gjøre nå, er å lage et nytt tema i wp-content / themes ved hjelp av boilerplate-koden, slik at du spesifiserer THEME attributt i package.json.

Og kjører:

gulp init

Nå har du to mapper:

  1. wp-gulp-automatisering (verktøyet for alle dine temaer)
  2. MyNewTheme (ditt nylig opprettede tema)

Mulighetene for dette er uendelige.

Du kan bruke CoffeeScript i stedet for vanlig JavaScript og fortell gulp å se etter det også. Du kan legge til flere oppgaver, avhengig av arbeidsflyten din. Noen nye oppgaveideer kan være:

  • fjerner .DS_Store, .thumb filer eller eventuelle uønskede filer automatisk
  • pakker temaet inn i en zip-mappe for innsending på Themeforest

Takk for at du leste! Hvis du har noe å legge til eller du har opprettet nye oppgaver som du kan dele med leserne, er du velkommen.

ressurser

  • Gulp nettsted
  • Gulp GitHub side