Använda Grunt för att göra din e-postdesign arbetsflöde kul igen

Designa e-post är svår och arkaisk. Inlining CSS, borddesign, varierande CSS-stöd, flera enheter, flera klienter, listan är oändlig. I den här handledningen ska jag förklara hur du kan använda Grunt för att automatisera och effektivisera ditt arbetsflöde.

Broken Email Design Workflow

E-postdesign är ett annat arbetsflöde för webbdesign. Ofta utformar du en mall i en isolerad miljö med liten eller ingen beroenden eller delade resurser. Du kan kopiera markup från en plats (lokal, statisk) till en annan (ESP, codebase). Det kan vara svårt att behålla dina e-postmallar, svårt att hålla dem konsekventa och besvärliga för att samarbeta med lagmedlemmar, samtidigt som du tänker på olika test och inlining som måste göras innan de skickas.

Ett problem som jag har haft tidigare är varje gång jag behövde en ny e-postmall, skulle jag ta en befintlig mall och göra några tweaks här och där. Detta skulle resultera i inkonsekventa e-postmeddelanden över produkten. Vilket är bara dålig övning.

En annan fråga som jag har stött på är att jag tror att jag är klar, så jag lägger mallen genom ett CSS inliner-verktyg och överlämnar det till en utvecklare, bara för någon att begära en ändring eller påpeka ett fel. Redigera / inline / kopiera arbetsflödet måste sedan upprepas.

Grunt till räddningen

Idag använder jag Grunt för att optimera mitt arbetsflöde för e-postdesign. Det hjälper till med några saker:

  • Det ger mig ett ramverk att arbeta med, så jag kan använda Sass och templera
  • Det fungerar som en panna för nya e-postmeddelanden
  • Det hjälper till att göra mina e-postmeddelanden konsekventa över ett projekt
  • Det automatiserar de olika uppgifter och test som jag måste göra för varje e-post

Vad är Grunt?

Grunt är en arbetslöpare. Det är en Javascript-fil som kör de uppgifter som du vill att den ska köra efter varandra. Den listan över saker du behöver göra jag nämnde just ovan? Vi kan lägga dem i en Grunt-fil och få det att göra allt för oss. Perfekt för löpande upprepade uppgifter.

För att få Grunt igång måste du få händerna lite smutsiga med kommandoradsmaterial och Javascript. Men det är väldigt rakt framåt.

1. Hur får man sig upp och kör

Chris Coyier ger en riktigt bra handledning om att installera Grunt för första gången. Jag ska springa över grunderna.

Grunt kräver ett par saker att komma igång. Node, en pakethanterare och en gruntfil.

Installera nod

Gå till nodwebbplatsen och följ instruktionerna för installation. 

Skapa paketet.json i ditt projektkatalog

Skapa en ny mapp (t ex kallad e-post) Skapa sedan en fil med namnet package.json.

Klistra in denna JSON i filen.

"namn": "emailDesign", "version": "0.1.0", "devDependencies": "grunt": "~ 0.4.5"

Här berättar vi nodhanteraren för att använda Grunt, version 0.4.5 eller senare.

NPM installera

För att installera ovanstående version av Grunt, gå till projektets katalog i kommandoraden och skriv in:

npm installera

När du kör detta kommando märker du en node_modules mappen visas.

Installera Grunt Command Line Interface

Fortsätt i din e-postkatalog, kör följande kommando:

npm installera -g grunt-cli

Notera: Du kan behöva förordna detta kommando med sudo  om du blir ombedd att köra den som root / Administrator. 

Efter att ha gjort det kan vi nu skriva in Grunt-kommandon i kommandoraden.

Skapa din Gruntfile.js

Skapa en fil som heter Gruntfile.js i din projektmapp och inkludera följande JavaScript:

module.exports = funktion (grunt) grunt.initConfig (pkg: grunt.file.readJSON ('package.json')); grunt.registerTask ( 'default'); ;

Detta är de nakna benen av vad som behövs för att Grunt ska arbeta. Nu för att lägga till fler spännande saker.

2. Lägg till uppgifterna till Grunt

Låt oss börja med något enkelt men viktigt: Inlining CSS. Låt oss säga att vi har en e-postmall, med CSS i huvudet. CSS i huvudet är lätt (ish) att behålla, men mallen som vi faktiskt vill skicka bör ha CSS inlines.

Skapa HTML-mallen

Vi ska använda en ganska grundläggande HTML-e-post med CSS i huvudet. Spara följande markering som email.html i projektets katalog.

     

Hej världen!

Det här är en e-postmall.

Installera CSS Inliner-uppgiften

Nästa kommer vi att använda en CSS inliner-uppgift för att placera varje stilregel inline på HTML-elementen själva. Jag gillar denna inliner eftersom det inte kräver andra beroenden. Gå tillbaka till kommandoraden och kör det här:

npm installera grunt-inline-css - save-dev

Detta kommer att lägga till grunt-inline-css-uppgiften till din npm_modules mapp, liksom package.json fil.

Lägg till uppgiften i din Gruntfile

Lägg sedan till uppgiften i din Gruntfile.js använder det här koden, ovanför där du ser grunt.registerTask ( 'default');

grunt.loadNpmTasks ( 'grunt-inline-css');

Lägg sedan till dina konfigurationsalternativ, inom grunt.initConfig () metod:

inlinecss: main: options: , filer: 'email-inlined.html': 'email.html'

Här talar vi inlinecss för att hitta filen heter "email.html" och utdata "email-inlined.html". Slutligen kallar vi det från grunt standarduppgift:

grunt.registerTask ( 'default', [ 'inlinecss']);

Final Gruntfile

Din Gruntfile borde nu se något så här:

modulen port: : 'email.html'); grunt.loadNpmTasks ( 'grunt-inline-css'); grunt.registerTask ( 'default', [ 'inlinecss']); ;

Kör Grunt

Återgå till kommandoraden igen, skriv grymta och skriv in för att köra den. 

Du borde nu vara kvar med en e-inlined.html fil som har css inlined. Om du öppnar båda HTML-filerna i din webbläsare ska de se ut på samma sätt.

Email Design Tasks

Med någon tur som har övertygat dig om Gruntts krafter i att automatisera ditt arbetsflöde för e-maildesign. Dessutom har efterföljande introduktion gett dig ramarna att gå ännu längre.

Vilka andra e-postdesignuppgifter kan du automatisera?

  • Kompilera CSS (om du använder SASS eller Mindre)
  • Inline CSS
  • Kompilera HTML-mallar (om du använder layouter och partiklar)
  • Förhandsgranska i webbläsaren
  • Förhandsgranska i e-postklienter
  • Testning med e-testprogram (Litmus, Email on Acid)
  • Överför tillgångar till en offentligt tillgänglig CDN
  • Lägga till UTM-spårningslags till länkar
  • ... listan fortsätter

Min Email Design Gruntfile

Detta är Gruntfile, som är öppet på GitHub, som jag använder ganska ofta. Låt oss ta en titt på de enskilda uppgifterna för att se vad som händer.

1. Sass / SCSS

Jag gillar att hantera min CSS med SCSS, så det första jag får Grunt att göra är att kompilera den viktigaste SCSS-filen.

2. Montera HTML

Assemble är en statisk webbplatsgenerator. Den sammanställer HTML genom att sammanföra huvudlayoutmallen och innehållet för varje e-post.

3. Inline CSS

Jag använder premailer till inline CSS. Om du undrar varför jag inte använder inlinern ovanifrån, fann jag att premailer har bättre stöd för mediafrågor. För mediafrågor att arbeta vill vi att dom ska lämnas ensam i huvudet, inte inriktat. 

Notera: premailer har beroenden som också måste installeras, inklusive Ruby och ett par pärlor.

4. Skicka en test-e-post

För att skicka ett mail till en inkorg använder jag Mailguns API. Detta skickar utmatad HTML-e-post till min inkorg så att jag kan se den för mig själv i vilken kund jag väljer.

Det här är också ett bra sätt att skicka din mall till Litmus om du vill förhandsgranska den i andra e-postklienter. Det handlar om att ändra mottagaren.

5. CDN

Det här är praktiskt om du skickar transaktionsmeddelanden och behöver lagra bildtillgångar någonstans. Om du använder en ESP (Email Service Provider) för att skicka dina e-postmeddelanden finns det en bra chans att de lagrar dina bildtillgångar för dig, så det är inte ett problem i det här fallet.

Att köra uppdragen

För att köra uppgiften har vi ett antal kommandotillfällen.

  • grymta kör standarduppgiften. Detta innefattar sammansättning av Sass, monteringsmallar och inläggning av CSS. Du kan sedan öppna uppspelningen i din webbläsare.
  • grunt send - template = MY_TEMPLATE.html kommer att köra ovanstående uppgifter, samt skicka ut e-postmallen du anger. Kom ihåg att uppdatera Mailgun-inställningarna i Gruntfile.js.
  • grunt cdnify kommer igen att köra standarduppgifterna, men laddar också upp eventuella lokala bildtillgångar och ersätter sedan filbanorna med CDN-sökvägen.
  • Observera att du också kan kombinera uppgifter t.ex.. grunt cdnify send -template = MY_TEMPLATE.html

Fler uppgifter!

Det finns fler uppgifter du kanske vill lägga till för att hjälpa din process, eller kanske du vill ta bort några. Gå vidare till Grunts plugin-katalog för att hitta de uppgifter som hjälper ditt arbetsflöde.

Transaktions Email Templates

Här är några mallar som jag förberett tidigare.

Med hjälp av arbetsflödet och Gruntfile som beskrivits ovan öppnade jag en handfull transaktionsmeddelanden för dev-team att använda. Använd gärna dem som är eller använd dem som en panna för dina egna e-maildesigner.

Användbara Email Design Resources

  • Ställa in Grunt för ditt nästa projekt
  • Förbättra ditt arbetsflöde i e-post med modulär design
  • E-postdesign arbetsflöde
  • Ett Grunt-arbetsflöde för att designa och testa HTML-e-postmeddelanden
  • Responsive HTML Email Templates för Startups

Slutsats

Många uppgifter i samband med e-postdesign kan vara svårt och besvärligt. Låt Grunt göra det hårda arbetet för dig och du hittar hela processen mycket roligare!