Bruke Grunt til å gjøre din e-postdesign arbeidsflyt gøy igjen

Designe e-post er vanskelig og arkaisk. Inlining CSS, borddesign, varierende CSS-støtte, flere enheter, flere klienter, listen er uendelig. I denne veiledningen vil jeg forklare hvordan du kan bruke Grunt for å automatisere og effektivisere arbeidsflyten din.

Broken Email Design Workflow

E-postdesign er en annen arbeidsflyt for webdesign. Ofte designer du en mal i et isolert miljø, med lite eller ingen avhengigheter eller delte ressurser. Du kan kopiere markering fra ett sted (lokal, statisk) til en annen (ESP, kodebase). Det kan være vanskelig å opprettholde e-postmallene dine, vanskelig å holde dem konsekvente og vanskelig å samarbeide med gruppemedlemmer, alt mens du husker de ulike testene og innsatsen som må gjøres før de blir sendt.

Et problem jeg har hatt tidligere er hver gang jeg trengte en ny e-postmal, ville jeg ta en eksisterende mal og deretter lage noen tweaks her og der. Dette vil resultere i inkonsekvent e-post på tvers av produktet. Det er bare dårlig praksis.

Et annet problem jeg har kommet over er at jeg tror jeg er ferdig, så jeg legger mal gjennom et CSS inliner-verktøy og overleverer det til en utvikler, bare for noen å be om en endring, eller påpeke en feil. Rediger / inline / copy-arbeidsflyten må deretter gjentas igjen og igjen.

Grunt to the Rescue

I dag bruker jeg Grunt for å optimalisere e-postdesign arbeidsflyten. Det hjelper med noen få ting:

  • Det gir meg et rammeverk å jobbe med, så jeg kan bruke Sass og templere
  • Den fungerer som en kjele for nye e-poster
  • Det hjelper med å gjøre e-postene mine konsekvente i et prosjekt
  • Den automatiserer de forskjellige oppgaver og tester jeg må gjøre for hver e-post

Hva er Grunt?

Grunt er en oppgaveløper. Det er en Javascript-fil som kjører oppgavene du vil at den skal kjøre en etter en. Den listen over ting du trenger å gjøre, har jeg nettopp nevnt ovenfor? Vi kan sette dem inn i en Grunt-fil og få den til å gjøre alle de for oss. Perfekt for løpende repeterende oppgaver.

For å få Grunt oppe, må du få hendene litt skitne med kommandolinjepost og Javascript. Men det er veldig rett fram.

1. Hvordan få Grunt opp og Running

Chris Coyier gir en veldig god opplæring om å sette opp Grunt for første gang. Jeg skal løpe over det grunnleggende.

Grunt krever et par ting å komme i gang. Node, en pakkebehandling og en grunt-fil.

Installer knutepunktet

Gå til Node-siden og følg instruksjonene for å installere. 

Opprett package.json i Prosjektets katalog

Opprett en ny mappe (for eksempel kalt e-post) Opprett deretter en fil som heter package.json.

Lim inn denne JSON inn i filen.

"navn": "emailDesign", "versjon": "0.1.0", "devDependencies": "grunt": "~ 0.4.5"

Her forteller vi nodepakkenes leder å bruke Grunt, versjon 0.4.5 eller nyere.

NPM installere

Nå for å installere den ovennevnte versjonen av Grunt, gå til prosjektets katalog i kommandolinjen og skriv inn:

npm installasjon

Når du kjører denne kommandoen, vil du legge merke til en node_modules mappen vises.

Installer Grunt Command Line Interface

Fortsett i e-postkatalogen din, kjør følgende kommando:

npm installere -g grunt-cli

Merk: Du må kanskje prepend denne kommandoen med sudo  hvis du blir bedt om å kjøre den som root / administrator. 

Etter å ha gjort det, kan vi nå skrive Grunt-kommandoer inn i kommandolinjen.

Lag din Gruntfile.js

Opprett en fil som heter Gruntfile.js i prosjektmappen din og ta med følgende JavaScript:

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

Dette er de bare beinene av hva som trengs for Grunt å jobbe. Nå for å legge til flere spennende ting.

2. Legg oppgavene til Grunt

La oss starte med noe enkelt, men viktig: Inlining CSS. La oss si at vi har en e-postmal, med CSS i hodet. CSS i hodet er enkelt (ish) å opprettholde, men malen vi faktisk vil sende bør ha CSS inlined.

Opprett HTML-malen

Vi skal bruke en ganske grunnleggende HTML-e-post med CSS i hodet. Lagre følgende oppføring som email.html i prosjektets katalog.

     

Hei Verden!

Dette er en e-postmal.

Installer CSS Inliner-oppgaven

Deretter skal vi bruke en CSS inliner-oppgave for å plassere hver stilregel inline på HTML-elementene selv. Jeg liker denne inliner som det ikke krever andre avhengigheter. Gå tilbake til kommandolinjen og kjør dette:

npm installer grunt-inline-css - save-dev

Dette vil legge til grunt-inline-css-oppgaven til din npm_modules mappe, så vel som package.json fil.

Legg til oppgaven til Gruntfile

Deretter legger du oppgaven til din Gruntfile.js bruker denne koden, over hvor du ser grunt.registerTask ( 'standard');

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

Deretter legger du til konfigurasjonsalternativene dine, innenfor grunt.initConfig () metode:

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

Her forteller vi inlinecss å finne filen som heter "email.html" og utdata "email-inlined.html". Til slutt, vi kaller det fra grunt standard oppgave:

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

The Final Gruntfile

Gruntfile skal nå se slik ut:

module.exports = funksjon (grunt) grunt.initConfig (pkg: grunt.file.readJSON ('package.json'), inlinecss: main: options: , filer: 'email-inlined.html' : 'email.html'); grunt.loadNpmTasks ( 'grov-inline-css'); grunt.registerTask ( 'standard', [ 'inlinecss']); ;

Kjør Grunt

Går tilbake til kommandolinjen, skriv inn grynte og skriv inn for å kjøre den. 

Du bør nå være igjen med en e-inlined.html fil som har css inlined. Hvis du åpner begge HTML-filene i nettleseren din, bør de se det samme.

E-postdesignoppgaver

Med noe flaks som vil ha overbevist deg om Gruntts krefter i å automatisere din e-postdesign arbeidsflyt. I tillegg har denne introduksjonen gitt deg rammen for å gå enda lenger.

Hvilke andre e-postdesignoppgaver kan du automatisere?

  • Kompil CSS (hvis du bruker SASS eller Mindre)
  • Inline CSS
  • Kompilere HTML-maler (hvis du bruker oppsett og delvise)
  • Forhåndsvisning i nettleseren
  • Forhåndsvisning i e-postklienter
  • Testing med e-post testing apps (Litmus, Email on Acid)
  • Laster inn eiendeler til en offentlig tilgjengelig CDN
  • Legge til UTM-sporingsmerker til koblinger
  • ... listen fortsetter

Min Email Design Gruntfile

Dette er Gruntfile, som er åpen på GitHub, som jeg bruker ganske ofte. La oss ta en titt på de enkelte oppgavene for å se hva som skjer.

1. Sass / SCSS

Jeg liker å administrere CSS ved hjelp av SCSS, så det første jeg får Grunt å gjøre er å kompilere hoved SCSS-filen.

2. Samle HTML

Assemble er en statisk nettsted generator. Den kompilerer HTML ved å samle hovedlayoutmalen (e) og innholdet for hver e-post.

3. Inline CSS

Jeg bruker premailer til inline CSS. Hvis du lurer på hvorfor jeg ikke bruker inlineren ovenfra, fant jeg ut at premailer har bedre støtte for medieforespørsler. For media spørsmål til arbeid, vil vi at de skal stå alene i hodet, ikke innstilt. 

Merk: premailer har avhengigheter som også må installeres, inkludert Ruby og et par edelstener.

4. Sende en test e-post

For å sende en epost til en innboks bruker jeg Mailgun API. Dette sender utgående HTML-e-post til innboksen min, så jeg kan se den for meg selv i hvilken klient jeg velger.

Dette er også en nyttig måte å sende malen din til Litmus hvis du vil forhåndsvise den i andre e-postklienter. Å gjøre det er et spørsmål om å endre mottakeren.

5. CDN

Dette er nyttig hvis du sender transaksjonelle e-postadresser og trenger å lagre bildeaktiver et sted. Hvis du bruker en ESP (e-postleverandør) for å sende e-postene dine, er det en god sjanse for at de lagrer bildegenskapene for deg, så det er ikke et problem i dette tilfellet.

Kjører oppgavene

For å kjøre oppgavene har vi en rekke kommandoalternativer.

  • grynte kjører standardoppgaven. Dette inkluderer kompilering av Sass, monteringsmaler og inlining av CSS. Du kan deretter åpne utgangen i nettleseren din.
  • grunt send --template = MY_TEMPLATE.html vil kjøre oppgavene ovenfor, samt sende ut e-postmalen du angir. Husk å oppdatere Mailgun-innstillingene i Gruntfile.js.
  • grunt cdnify Vil igjen kjøre standardoppgaver, men vil også laste opp eventuelle lokale bildeaktiver, og deretter erstatte filbanene med CDN-banen.
  • Merk at du også kan kombinere oppgaver, f.eks. grunt cdnify send -template = MY_TEMPLATE.html

Flere oppgaver!

Det er flere oppgaver du kanskje vil legge til for å hjelpe prosessen din, eller du vil kanskje fjerne noen. Gå over til Grunts plugin-katalog for å finne oppgavene som hjelper arbeidsflyten din.

Transaksjonelle e-postmaler

Her er noen maler jeg har utarbeidet tidligere.

Ved å bruke arbeidsflyten og Gruntfile skissert ovenfor, åpnet jeg en håndfull transaksjonsmessige e-postadresser for dev-lag som skal brukes. Du kan gjerne bruke dem som det er, eller bruke dem som en kjele for dine egne e-postdesign.

Nyttige Email Design Resources

  • Setter opp Grunt for ditt neste prosjekt
  • Forbedre e-post arbeidsflyten din med modulær design
  • E-postdesign arbeidsflyt
  • En Grunt-arbeidsflyt for å designe og teste HTML-e-post
  • Responsive HTML Email Templates for Startups

Konklusjon

Mange oppgaver knyttet til e-postdesign kan være vanskelig og vanskelig. La Grunt gjøre det harde arbeidet for deg, og du vil finne hele prosessen mye morsommere!