Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

marilena

Package Overview
Dependencies
Maintainers
1
Versions
34
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

marilena

a tool to build emails with cool tools like mjml and different template engine lime handlebars or eta.js

  • 0.0.3
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
47
increased by213.33%
Maintainers
1
Weekly downloads
 
Created
Source

Intro

Emails are hard to develop. there is some awesome libs that makes the development more easy. But each library allow us to do a single thing without focus on a full development flow. This project wants to mix up MJML, a template enigne for variables/logic and a web server.

🚀 Usage

Install (require node >=18)

npm i marilena

How to use it

1 - create a marilena.config.js file under root of your project:

// this is an example of config structure
module.exports = {
	templateSuffix:  ".html",
	inputFolder:  "input",
	outputFolder:  "output",
	locales: ["en","it"],
	templateOptions: {
		engine:  "eta",
		variablesType:  "json",
		prepareEngine: (xxx) => {
            // engine eta => xxx = eta
            // engine handlebars => xxx = handlebars
            // read below about this part
		},
	},
};

2 - create a file structures based on your config. PLease remember that each email template requires index as name, and variables are loaded only from variables.json

project
| marilena.config.js
│ package.json
│ input
│ └──buy // email name
││││││└─── index.html // index[templateSuffix]
││││││└─── en
│││││││││││└── variables.json
││││││└─── it
│││││││││││└── variables.json

3 - fill your emails template with MJML syntax

<mjml>
  <mj-body>
    <mj-section>
      <mj-column>
        <!-- read below about template engine -->
        <mj-text>hello <%= it.user %></mj-text>
      </mj-column>
    </mj-section>
  </mj-body>
</mjml>

4 - run one of these 2 commands

# open a server on http://localhost:8080
npm run start
# build all emails based on config (template engine, output folder, and locales)
npm run build

Configuration

Under the hood a default configuration will be loaded but a file marilena.config.js allow us to set:

namerequireddescriptiondefault
templateSuffixXextension of files used for email. Used for filter and can any value.html
inputFolderXfolder where email are in the projectinput
outputFolderXfolder used for generated email (when run build command)output
localesXarray of languages used. If you company has only spanish email use an array of single value["en"]
templateOptionsif you chose to use one of supported engines, this part id required to setup custom partial and other settings for the template engine selected. Read below for some use casesempty

About templateOptions

This project can producte output html from input template. But in a real word probably we store variables in some part and render some content multiple times (example a footer). In this case templateOptions can define:

  • engine: a subset of fastify supported template engine. At this moment ["eta","handlebars"] are supported.
  • variablesType: define if variables are loaded from json file or yaml file. At this moment only json are supported.
  • prepareEngine: define a callback where we can setup our engine. Basically you can define all things before the render. For example:
	templateOptions: {
		engine:  "eta",
		variablesType:  "json",
		prepareEngine: (eta) => {
            // we can register partial like:
            // eta is same of var eta = require("eta");
            eta.templates.define("partial_1", eta.compile("this is partial 1"));
		},
	},
	templateOptions: {
		engine:  "handlebars",
		variablesType:  "json",
		prepareEngine: (h) => {
            // we can register partial like:
            // handlebars is same of var h = require("handlebars");
            h.registerPartial("myPartial", "partial with {{ user }}");
		},
	},

🚀 features

  • MJML support
  • load variables with template engine
  • eta.js, handlebars
  • ejs, nunjucks, mustache, dot, liquid
  • fast-refresh on variables changes
  • fast-refresh on template change
  • fast-refresh on config change
  • load varibles from yaml format
  • load common variables
  • easy way to send a real email

Keywords

FAQs

Package last updated on 11 Apr 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc