Använda Gulp för WordPress Automation

I den här artikeln ser du hur du kan använda gulp för att automatisera flera uppgifter som du brukar göra för hand eller för vilken du är beroende av verktyg som utvecklats av andra.

Vad är Gulp

Gulp är ett strömmande byggsystem. Du kanske har hört talas om och använt grunt redan. Men på senare tid blir det mer populärt. Det kan göra fantastiska saker som att kompilera LESS / Sass, JS-filer, live reloading webbsidor och mycket mer.

Varför använda Gulp

Det kan spara mycket tid genom att automatisera flera uppgifter. Och det bästa är att du har befogenhet att berätta vad du ska göra, till skillnad från att förlita dig på verktyg från tredje part för att implementera viss funktionalitet. Kort sagt kan du bygga ditt eget automationsverktyg enligt dina behov.

förutsättningar

För att komma igång måste du ha Node.js (v0.10.30 eller högre) installerat. Jag föredrar personligen att använda Node Version Manager (NVM) så att jag kan växla mellan olika versioner av Node.js på min utvecklingsmaskin.

Låt oss börja

Det första du behöver göra är att installera gulp. Använd följande kommando från terminal för att göra det.

npm installera -g gulp

Detta installerar gulp globalt på din maskin.

Låt oss börja konfigurera automatiseringsverktyget genom att skapa en katalog i mappen WordPress-teman eller vilken föredragen plats du vill ha.

I mitt fall kommer jag att navigera till teman mappen ...

cd ... / wp-innehåll / teman

... och kör följande kommando.

mkdir wp-gulp-automation

Nu ska jag navigera till mappen för att initiera en npm projekt.

cd wp-gulp-automation npm init

Detta kommer att fråga dig flera frågor som projektnamn, version, beskrivning, författare, licens osv.

Du kan antingen fylla i eller fortsätta slå Stiga på tills det står ja. Slutligen typ ja och slå Stiga på en gång till.

Detta skapar en paket.json-fil i katalogen. Den innehåller information om ditt projekt och dess beroenden.

Om du har följt processen på rätt sätt ser din package.json-fil ut så här:

"namn": "wp-gulp-automation", "version": "1.0.0", "beskrivning": "", "main": "index.js", "scripts": "test" echo \ "Fel: inget test specificerat \" && avsluta 1 "," författare ":" "," licens ":" ISC "

First Gulp File

Installera gulp lokalt för ditt projekt.

npm installera gulp - save-dev

Detta skapar en node_modules mapp och behåll alla dina projektberoende där. --spara-dev används för att uppdatera dev-beroenden i package.json.

Skapa gulpfile.js i projektkatalogen med följande kod.

var gulp = kräver ("gulp"); gulp.task ('default', funktion () console.log ('standard gulp task ...'));

I terminaltypen klunk och slå Stiga på. Du kommer att se att texten ovan är loggad till konsolen.

Skapa ett Basic Sass-kompileringsverktyg

Det finns olika gulp plugins tillgängliga för Sass kompilering. Jag har provat och listat tre av dem nedan.

  1. gulp-sass (enkel och enkel att använda)
  2. gulp-kompass (fungerar bra med kompass-baserade projekt)
  3. gulp-ruby-kompass (den här ger mer kontroll än de andra två)

För enkelhets skull, i denna handledning kommer jag att använda den första, det är gulp-sass.

Kör följande kommando i projektkatalogen för att installera det.

npm installera gulp-sass -save-dev

Låt oss uppdatera koden för att kompilera Sass-filer i CSS-filer.

Lägg till kräver på toppen av gulpfile.

var sass = kräver ("gulp-sass"); gulp.task ('sass', funktion () gulp.src ('./css / src / * .scss') .pipe (sass ()) .pipe (gulp.dest ('./ css')); ); gulp.task ('default', ['sass']);

Nu när jag kör gulp sass i terminal är sass-uppgiften avfyrade.

Och eftersom jag har lagt till den i en rad standarduppdrag, när jag kör kanten i terminal, brinner standarduppgiften sass-uppgiften.

Vad detta kommer att göra är att kompilera alla filer i css / src mapp på projektet och spara dem till css mapp. Du kanske vill skicka extra alternativ till sass () funktion beroende på dina behov.

Så i princip kör klunk och gulp sass kommer att göra samma sak just nu.

Lint och kompilera JS-filer

För att kunna ha bättre och förpackad JavaScript-kod i dina teman behöver du gulp-jshint och gulp-concat.

npm installera gulp-jshint - save-dev npm installera gulp-concat - save-dev

Lägg nu till på toppen av gulpfile:

var jshint = kräver ('gulp-jshint'); var concat = kräver ("gulp-concat");

Lägg till följande gulp-uppgift i filen till lint och kombinera alla js-filer.

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

Om du vill organisera lite mer, kan du ha Säljare och tema mappar inuti js / src. De Säljare mappen innehåller alla tredjepartsbibliotek som jQuery-plugins och tema mappen innehåller ditt eget temas JavaScript-kod.

Om du också vill begränsa dem kan du inkludera gulp-uglify plugin. Och låt oss uppdatera vår standarduppgift till:

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

Optimera bilder

Den vanligaste gulp plugin för denna uppgift är gulp-imagemin. Installera det med hjälp av:

npm installera gulp-imagemin --sav-dev

Lägg till krav klunk-imagemin på toppen:

var imagemin = kräver ('gulp-imagemin');

Och lägg till följande uppgift i gulpfile.

gulp.task ('img', funktion () gulp.src ('img / src / *. png, jpg, gif') .pipe (imagemin (optimizationLevel: 7, progressive: true)) (gulp.dest ('img')));

Vad detta kommer att göra är att göra en optimerad kopia av alla bilder som placeras i img / src katalog i img katalog.

Lägg till den i standarduppgiftslistan.

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

Titta på uppgift

Nästa ställer in en klocka för automatiserande uppgifter.

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

Om du lägger till den i standarduppgiftslistan ger vi oss följande information:

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

Felhantering

Vad händer om ett fel uppstår när du kör en av våra uppgifter? Din gulpfil kommer sluta springa.

För att hantera det, låt oss använda ett trevligt gulp-plugin som kallas gulp-plumber. Vi använder även gulp-notify för att visa fina grönt liv meddelanden vid fel.

Installera klunk-rörmokare och gulp-notify använder sig av:

npm installera gulp-rörmokare - save-dev npm installera gulp-meddela --save-dev

Återigen kräver detta på toppen av gulpfile.

Var rörmokare = kräver ("gummiblandare"); var notify = require ("gulp-notify");

Här är en praktisk rörmokare som jag använder när ett fel uppstår i någon av uppgifterna.

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

Nu uppdaterad sass uppgiften kommer att se ut:

gulp.task ('sass', funktion () gulp.src ('./css / src / * .scss'). pip (rörmokare (plumberErrorHandler)). pip (sass ()). pip (gulp.dest './css')));

Lägg märke till plumberErrorHandler Lagt till. På samma sätt lägger jag till detta i js och img uppgifter.

Live Reload

En viktig sak som behövs är live reload-funktionalitet.

Först och främst installera en webbläsareutvidgning / addon för live reload:

  • Chrome-förlängning
  • Firefox addon

Nu behöver du installera gulp-livereload med:

npm installera gulp-liveraload - save-dev

En gång till lägger den till toppen där du behöver i gulpfile.

var leverbelastning = kräva ("gulp-livereload");

Låt oss uppdatera våra uppgifter för att inkludera live reload nu.

De sass uppgiften kommer att se ut så här:

gulp.task ('sass', funktion () gulp.src ('./css / src / * .scss'). pip (rörmokare (plumberErrorHandler)). pip (sass ()). pip (gulp.dest './css')). pip (leverplatta ()););

På samma sätt lägg till livereload till js och img uppgifter. En sak du behöver göra är att lägga till livereload.listen (); i början av klockan uppgiften.

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

För att testa livereload, låt oss skapa en index.php-fil med följande kod.

      

hej från gulp automation verktyg

Och en style.css.

/ * Tema Namn: Tutsplus Gulp WP Automation Tema URI: http://tutsplus.com Beskrivning: Automatiserar Wordpress Development Workflow. Författare: Atinder Singh Författare URI: http://tutsplus.com Version: 1.4.1 Licens: GNU General Public License v2 eller senare Licens URI: http://www.gnu.org/licenses/gpl-2.0.html * /

Aktivera nu detta tema från WordPress instrumentpanel. Du har din grundläggande miljö inställd och redo att rocka. Springa klunk i terminal och visa det aktiverade temat i din webbläsare. Klicka på live reload-förlängningen så att live reload-servern blir ansluten och lyssna på ändringarna.

När du ändrar filens innehåll i css / src eller js / src, Gulp övervakar och sammanställer filerna och laddar om din webbläsare.

Lite avancerade saker

Nu har du ett verktyg som kan användas för att skapa flera teman, så låt oss flytta temafilerna till en annan mapp i wp-content / themes / wp-klunk-automation / tema-standardtext katalog.

Kopiera index.php och style.css filer och css, img och js mappar till theme-standardtext.

Det här är en väldigt grundläggande tema-panna. Du kan förlänga detta eller använd den du vill.

För den här sista uppgiften behöver du tre Node.js-moduler. Installera json-fil, node-fs och fs-extra.

npm installera json-fil - save-dev npm installera nod-fs - save-dev npm installera fs-extra - save-dev

Kräver dem längst upp i ditt gulpfile.

var fs = kräver ('nod-fs'); var fse = kräver ("fs-extra"); var json = kräver ('json-fil'); var themeName = json.read ('./pack.json'). få ('themeName'); var themeDir = '... /' + themeName;

Lägg till den här uppgiften i ditt gulpfile.

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

Vad du kan göra nu är att skapa ett nytt tema i wp-content / teman Använd kedjeplattkoden som så, med angivande av THEME attribut i package.json.

Och springande:

gulp init

Nu har du två mappar:

  1. wp-gulp-automation (verktyget för alla dina teman)
  2. myNewTheme (ditt nyskapade tema)

Möjligheterna för detta är oändliga.

Du kan använda CoffeeScript istället för regelbunden JavaScript och berätta om att titta på det också. Du kan lägga till fler uppgifter beroende på ditt arbetsflöde. Några nya uppgiftsidéer kan vara:

  • tar bort .DS_Store, .thumb-filer eller oönskade filer automatiskt
  • förpackar temat i en zip-mapp för inlämning på Themeforest

Tack för att du läser! Om du har något att lägga till eller du har skapat nya uppgifter som du kan dela med läsare, är du välkommen.

Medel

  • Gulp webbplats
  • Gulp GitHub sidan