Mjml Render Bin
This project provides a way to convert MJML code into HTML emails directly within PHP projects by including pre-built, self-contained binaries. This eliminates the need for a Node.js installation at runtime. It automatically detects your system and downloads the correct binary during installation.
Standalone MJML to HTML renderer for PHP with pre-built binaries. No Node.js required at runtime.
This package provides a self-contained MJML binary and a PHP wrapper that converts MJML markup into responsive HTML email. It is designed to be used as a dependency of the MJML Render Engine module, but can also be used independently in any PHP project.
How It Works
MJML is a markup language for building responsive emails. Normally it requires Node.js to render. This package eliminates that requirement by shipping pre-built standalone binaries compiled with @yao-pkg/pkg — the Node.js runtime is embedded directly in the binary.
A Composer plugin automatically detects your platform during composer install and downloads the correct binary from a platform-specific release tag. The binary is placed at a single known path: vendor/drupal/mjml_render_bin/bin/mjml.
Supported Platforms
Platform Architecture Linux x64 Linux ARM64 macOS (Darwin) x64 macOS (Darwin) ARM64Installation
composer require drupal/mjml_render_binUsage
use Drupal\mjml_render_bin\MjmlBinaryRenderer; $renderer = new MjmlBinaryRenderer(); $html = $renderer->render('<mjml><mj-body>...</mj-body></mjml>');Custom Binary Path
You can provide a custom binary path:
$renderer = new MjmlBinaryRenderer('/path/to/custom/mjml');When used with the MJML Render Engine module, configure the path in settings.php:
$settings['mjml_render_bin.path'] = '/path/to/custom/mjml';Building a Custom Binary with Docker
Build the latest MJML binary without installing Node.js locally:
# Latest version for Linux x64 docker run --rm -v $(pwd)/custom-bin:/output node:22-alpine sh -c \ "npm install -g mjml @yao-pkg/pkg && \ pkg \$(which mjml) -t node22-linuxstatic-x64 -o /output/mjml" # Specific version (e.g., 4.15.3) docker run --rm -v $(pwd)/custom-bin:/output node:22-alpine sh -c \ "npm install -g [email protected] @yao-pkg/pkg && \ pkg \$(which mjml) -t node22-linuxstatic-x64 -o /output/mjml"Release Strategy
This package uses a branching strategy to deliver platform-specific binaries without bloating the main package:
- The
mainbranch contains only PHP code (~50KB) - Platform branches (
linux-x64,darwin-arm64, etc.) contain the same code plus the binary - Stable tags (e.g.,
1.0.0) are created onmain - Platform-suffixed tags (e.g.,
1.0.0-linux-x64) are created on platform branches - The Composer plugin automatically downloads the binary from the matching platform tag
Depends on
Dependencies of the latest stable release
No dependencies recorded for this project.
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Release Timeline
Releases
| Version | Type | Core | Notes | Release date | |
|---|---|---|---|---|---|
| 1.0.1 | Stable | Release 1.0.1 (MJML 5.3.0) | May 28, 2026 | ||
| 1.0.0 | Stable | May 3, 2026 | |||
| 1.0.0-beta5 | Pre-release | May 3, 2026 | |||
| 1.0.0-beta2 | Pre-release | May 3, 2026 | |||
| 1.0.0-beta1 | Pre-release | May 3, 2026 | |||
| 1.0.x-dev | Dev | May 3, 2026 | |||
| 1.0.0-beta4 | Pre-release | Apr 27, 2026 | |||
| 1.0.0-beta3 | Pre-release | Release 1.0.0-beta3 (MJML 4.15.3) | Apr 27, 2026 |