#mjml #markup-language #cli

app mrml-cli

CLI for the Rust implementation of MJML renderer

23 stable releases

new 1.5.7 Apr 13, 2024
1.5.5 Mar 21, 2024
1.4.3 Dec 19, 2023
1.3.3 Mar 25, 2022
0.3.3 Oct 14, 2020

#34 in Email

Download history 2/week @ 2023-12-22 4/week @ 2024-01-26 6/week @ 2024-02-02 79/week @ 2024-02-09 34/week @ 2024-02-16 369/week @ 2024-02-23 362/week @ 2024-03-01 103/week @ 2024-03-08 442/week @ 2024-03-15 126/week @ 2024-03-22 50/week @ 2024-03-29 181/week @ 2024-04-05

844 downloads per month

MIT license

595KB
15K SLoC

MRML

Crates.io Crates.io

Build Status codecov

Average time to resolve an issue Percentage of issues still open Maintainability

Introduction

This project is a reimplementation of the nice MJML markup language in Rust.

How to use it in the cli

# installing mrml-cli
cargo install --locked mrml-cli
# using it 
mrml-cli path/to/template.mjml validate
mrml-cli path/to/template.mjml render
mrml-cli path/to/template.mjml format-json --pretty
mrml-cli path/to/template.json format-mjml --pretty
# getting some help
mrml-cli --help

Why?

  • A Node.js server rendering an MJML template takes around 20 MB of RAM at startup and 130 MB under stress test. In Rust, less than 1.7 MB at startup and a bit less that 3 MB under stress test. The Rust version can also handle twice as many requests per second. You can perform the benchmarks by running bash script/run-bench.sh.
  • The JavaScript implementation cannot be run in the browser; the Rust one (and WebAssembly one) can be.

You want to contribute?

Feel free to read our contributing section and the code of conduct.

Performance

With the same Linux amd64 machine, to render the amario template

  • Node: 606.59ms
  • Rust: 3.48ms

You want to sponsor us?

Buy Me A Coffee

Thanks to zachzurn.

Dependencies

~5.5MB
~136K SLoC