This project is not covered by Drupal’s security advisory policy.

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 (not supported yet)
macOS (Darwin) x64
macOS (Darwin) ARM64 (not supported yet)

Installation

composer require drupal/mjml_render_bin

Usage


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 mjml@4.15.3 @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 main branch 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 on main
  • 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
Supporting organizations: 
Maintenance, initial development.

Project information

  • caution Minimally maintained
    Maintainers monitor issues, but fast responses are not guaranteed.
  • Created by voleger on , updated
  • shield alertThis project is not covered by the security advisory policy.
    Use at your own risk! It may have publicly disclosed vulnerabilities.

Releases