Utiliser Grunt pour rendre votre flux de travail de conception d'e-mail encore plus amusant

Concevoir un courrier électronique est difficile et archaïque. Inlining CSS, design de tableau, support CSS variable, plusieurs périphériques, plusieurs clients, la liste est infinie. Dans ce tutoriel, nous expliquerons comment utiliser Grunt pour automatiser et rationaliser votre flux de travail..

Flux de travail de conception d'email brisé

La conception de courrier électronique est un flux de travail différent de la conception Web. Vous concevez souvent un modèle dans un environnement isolé, avec peu ou pas de dépendances ou de ressources partagées. Vous êtes peut-être en train de copier un balisage d'un endroit (local, statique) vers un autre (ESP, base de code). Il peut être difficile de gérer vos modèles de courrier électronique, de les maintenir cohérents et difficiles à collaborer avec les membres de l'équipe, tout en gardant à l'esprit les différents tests et procédures en ligne à effectuer avant leur envoi..

Un problème que j’ai eu par le passé est que chaque fois que j’avais besoin d’un nouveau modèle de courrier électronique, je prenais un modèle existant, puis apportais quelques modifications ici et là. Cela entraînerait des courriels incohérents dans l'ensemble du produit. Ce qui est juste une mauvaise pratique.

Un autre problème que j'ai rencontré est que je pense avoir terminé. J'ai donc placé le modèle dans un outil inliner CSS et le remis à un développeur, uniquement pour permettre à quelqu'un de demander une modification ou de signaler une erreur. Le flux de travail édition / en ligne / copie doit ensuite être répété encore et encore.

Grunt à la rescousse

De nos jours, j'utilise Grunt pour optimiser mon flux de travail de conception d'email. Cela aide avec quelques choses:

  • Cela me donne un cadre de travail pour que je puisse utiliser Sass et les modèles
  • Il sert de passe-partout pour les nouveaux emails
  • Cela aide à uniformiser mes courriels dans un projet
  • Il automatise les différentes tâches et tests que je dois faire pour chaque email.

Qu'est-ce que Grunt??

Grunt est un coureur de tâches. C'est un fichier Javascript qui exécute les tâches que vous souhaitez exécuter les unes après les autres. Cette liste de choses que vous devez faire, je viens de mentionner ci-dessus? Nous pouvons les mettre dans un fichier Grunt et le laisser faire tout cela pour nous. Parfait pour exécuter des tâches répétitives.

Pour que Grunt soit opérationnel, vous devez vous salir les mains avec des commandes en ligne de commande et Javascript. Mais c'est très simple.

1. Comment bien faire fonctionner Grunt

Chris Coyier donne un très bon tutoriel sur la configuration de Grunt pour la première fois. Je vais courir sur les bases.

Grunt nécessite deux choses pour y aller. Node, un gestionnaire de paquets et un fichier grunt.

Installer le nœud

Allez sur le site Node et suivez les instructions pour installer. 

Créez package.json dans le répertoire de votre projet

Créez un nouveau dossier (appelé par exemple email) puis créez un fichier nommé package.json.

Coller ce JSON dans le fichier.

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

Ici, nous demandons au gestionnaire de package de noeud d'utiliser Grunt, version 0.4.5 ou ultérieure..

NPM installer

Maintenant, pour installer la version ci-dessus de Grunt, allez dans le répertoire de votre projet en ligne de commande et entrez:

npm installer

Lorsque vous exécutez cette commande, vous remarquerez une node_modules dossier apparaît.

Installer l'interface de ligne de commande Grunt

Toujours dans votre répertoire de messagerie, exécutez la commande suivante:

npm installer -g grunt-cli

Remarque: vous devrez peut-être ajouter cette commande à sudo  si vous êtes invité à l'exécuter en tant que root / administrateur. 

Ceci fait, nous pouvons maintenant taper des commandes Grunt dans la ligne de commande.

Créez votre Gruntfile.js

Créez un fichier appelé Gruntfile.js dans votre dossier de projet et inclure le code JavaScript suivant:

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

C’est tout ce dont nous avons besoin pour que Grunt fonctionne. Maintenant, pour ajouter des choses plus excitantes.

2. Ajouter les tâches à grogner

Commençons par quelque chose de simple, mais vital: CSS en ligne. Disons que nous avons un modèle de courrier électronique, avec CSS dans la tête. CSS dans la tête est facile (ish) à maintenir, mais le modèle que nous voulons réellement envoyer devrait avoir CSS en ligne.

Créer le modèle HTML

Nous allons utiliser un email HTML assez basique avec le CSS en tête. Enregistrez le balisage suivant sous le nom email.html dans le répertoire de votre projet..

     

Bonjour le monde!

Ceci est un modèle de courrier électronique.

Installer la tâche CSS Inliner

Ensuite, nous allons utiliser une tâche inliner CSS pour placer chaque règle de style en ligne sur les éléments HTML eux-mêmes. J'aime cet inliner car il ne nécessite pas d'autres dépendances. Retournez à votre ligne de commande et lancez ceci:

npm installer grunt-inline-css --save-dev

Cela ajoutera la tâche grunt-inline-css à votre npm_modules dossier, ainsi que le package.json fichier.

Ajouter la tâche à votre Gruntfile

Ensuite, ajoutez la tâche à votre Gruntfile.js en utilisant cet extrait, ci-dessus où vous voyez grunt.registerTask ('default');

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

Puis ajoutez dans vos options de configuration, dans le grunt.initConfig () méthode:

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

Ici, nous demandons à inlinecss de trouver le fichier nommé "email.html" et de générer "email-inlined.html". Enfin, nous l'appelons de la tâche par défaut grunt:

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

Le dernier Gruntfile

Votre Gruntfile devrait maintenant ressembler à ceci:

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

Run Grunt

Pour revenir à la ligne de commande, tapez grognement et entrez pour l'exécuter. 

Vous devriez maintenant être laissé avec un email-inlined.html fichier qui a le css en ligne. Si vous ouvrez les deux fichiers HTML dans votre navigateur, ils doivent être identiques..

Email Design Tasks

Avec un peu de chance, cela vous aura convaincu des pouvoirs de Grunt pour automatiser votre flux de travail de conception d’e-mails. De plus, la suite de cette introduction vous a donné le cadre pour aller encore plus loin.

Quelles autres tâches de conception de courrier électronique pourriez-vous automatiser??

  • Compiler CSS (si vous utilisez SASS ou Less)
  • CSS en ligne
  • Compiler les modèles HTML (si vous utilisez des modèles et des partiels)
  • Prévisualisation dans le navigateur
  • Prévisualisation dans les clients de messagerie
  • Test avec des applications de test de messagerie (Litmus, Email on Acid)
  • Téléchargement d’actifs sur un CDN accessible au public
  • Ajout de balises de suivi UTM aux liens
  • … la liste continue

Mon Email Design Gruntfile

C’est le fichier Gruntfile, en libre accès sur GitHub, que j’utilise assez souvent. Jetons un coup d'oeil aux tâches individuelles pour voir ce qui se passe réellement.

1. Sass / SCSS

J'aime gérer mes CSS avec SCSS. La première chose à faire pour Grunt est donc de compiler le fichier SCSS principal..

2. Assembler le HTML

Assemble est un générateur de site statique. Il compile le code HTML en réunissant le ou les principaux modèles de mise en page et le contenu de chaque email..

3. CSS en ligne

J'utilise premailer pour CSS en ligne. Si vous vous demandez pourquoi je n'utilise pas l'inliner ci-dessus, j'ai constaté que Premailer supporte mieux les requêtes multimédia. Pour que les requêtes des médias fonctionnent, nous voulons qu'elles restent seules dans la tête et non en ligne.. 

Remarque: premailer a des dépendances qui doivent également être installées, y compris Ruby et quelques gemmes.

4. Envoi d'un email de test

Pour envoyer un email à une boîte de réception, j'utilise l'API de Mailgun. Cela envoie le courrier électronique HTML généré dans ma boîte de réception afin que je puisse le voir moi-même, quel que soit le client choisi..

C'est également un moyen utile d'envoyer votre modèle à Litmus si vous souhaitez le prévisualiser dans d'autres clients de messagerie. Il s’agit de changer le destinataire.

5. CDN

C'est pratique si vous envoyez des courriels transactionnels et que vous devez stocker des ressources d'image quelque part. Si vous utilisez un fournisseur de service de courrier électronique (ESP) pour envoyer vos courriels, il est fort probable qu'ils stockent vos images, ce n'est donc pas un problème dans ce cas..

Exécuter les tâches

Pour exécuter les tâches, nous avons plusieurs options de commande..

  • grognement exécute la tâche par défaut. Cela comprend la compilation de Sass, l'assemblage de modèles et l'intégration du CSS. Vous pouvez ensuite ouvrir la sortie dans votre navigateur.
  • Grunt Send --template = MY_TEMPLATE.html exécute les tâches ci-dessus, ainsi que l'envoi du modèle de courrier électronique que vous spécifiez. N'oubliez pas de mettre à jour les paramètres Mailgun dans Gruntfile.js.
  • grognement cdnify exécutera à nouveau les tâches par défaut, mais téléchargera également tous les éléments d'image locaux, puis remplacera les chemins de fichiers par le chemin du CDN.
  • Notez que vous pouvez également combiner des tâches, par exemple. grunt cdnify send -template = MY_TEMPLATE.html

Plus de tâches!

Vous voudrez peut-être ajouter d'autres tâches pour faciliter votre processus ou vous pouvez en supprimer certaines. Rendez-vous dans le répertoire des plug-ins de Grunt pour trouver les tâches qui aident votre flux de travail.

Modèles d'e-mails transactionnels

Voici quelques modèles que j'ai préparés plus tôt.

En utilisant le flux de travail et le fichier Gruntfile décrits ci-dessus, j'ai ouvert à l’origine une poignée de courriers électroniques transactionnels à l’usage des équipes de développement. N'hésitez pas à les utiliser tels quels, ou à les utiliser comme passe-partout pour vos propres designs de courrier électronique.

Ressources utiles de conception de courrier électronique

  • Configurer Grunt pour votre prochain projet
  • Améliorez votre flux de messagerie avec une conception modulaire
  • Flux de travail de conception de courrier électronique
  • Un workflow Grunt pour concevoir et tester des emails HTML
  • Modèles de messagerie HTML réactifs pour les startups

Conclusion

De nombreuses tâches associées à la conception des e-mails peuvent être ardues et difficiles. Laissez Grunt faire le travail dur pour vous et vous trouverez le processus beaucoup plus agréable.!