Socket
Socket
Sign inDemoInstall

email-minifier

Package Overview
Dependencies
107
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    email-minifier

A well-tested email minifier based on TypeScript for browser and Node.js


Version published
Weekly downloads
14
decreased by-58.82%
Maintainers
1
Created
Weekly downloads
 

Readme

Source

EmailMinifier

npm version

EmailMinifier is a well-tested email minifier based on TypeScript for browser and Node.js

https://github.com/luckrnx09/email-minifier/assets/113882203/2f2ad00e-73d8-437e-b357-7505b9d9e78a

As a quick start, you can Try it online 🚀

Why not HTMLMinifier

HTMLMinifier is a great tool for compressing HTML. But email is different from HTML in many ways, compression of HTML is often not the best solution.

  • JavaScript code is not supported or required in emails.
  • The interactive behavior of the email is very limited, most HTML attributes are useless for the email but still load them when user open it.
  • Some email clients crop oversized emails (e.g. Gmail) and the style of the email is broken after cropping, which is extremely detrimental to marketing.
  • ...

Installation

You can use the tool you like to install EmailMinifier:

npm

npm install email-minifier 

yarn

yarn add email-minifier 

pnpm

pnpm install email-minifier 

Usage

For both browser and Node.js if you use ESM:

import { EmailMinifier } from 'email-minifier';
(async () => { 
    const emailBody = `<div class="hello"></div>`;
    const options = {};
    const result = await new EmailMinifier(emailBody).minify(options);
    console.log(result);
})();

For Node.js only if you use CommonJS:

const { EmailMinifier } = require('email-minifier');
(async () => { 
    const emailBody = `<div class="hello"></div>`;
    const options = {};
    const result = await new EmailMinifier(emailBody).minify(options);
    console.log(result);
})();

The minify() method will returns a Promise with the shape as follow:

{
    original: '', // the original email body string
    minified: '', // minified email body string will be here, if no tasks ran, it'll be null
    tasks: [] // all ran tasks when minify email body
}

All available properties for options are as follows

OptionDescriptionDefault
minifyIdsMinifiy id attributes used in style tagstrue
minifyClassesMinifiy class attributes used in style tagstrue
minifyDatasetsMinifiy data-* attributes used in style tagstrue
removeUnusedAttrsRemove custom attributes unused in style tagsfalse
minifyStylesMinifiy CSS content for all the style tagstrue

For removeUnusedAttrs, if you want to remove the specific unused attributes, you can provide an array with RegExp instances to match them.

For example:

const options = {
    removeUnusedAttrs: [
        new RegExp('custom-test-id') // Remove `custom-test-id` attributes if they not used in style tags
    ]
};

Performance

The following table shows the statistics in the Node.js environment

EmailOriginal SizeMinified SizeElapsed Time
Holiday Cheer33.09kb32.36kb580.30ms
Membership Discount104.00kb37.97kb93.61ms
Movies for Christmas289.47kb58.30kb138.13ms

The emails above are generated from unlayer.

License

See LICENSE

Keywords

FAQs

Last updated on 26 Dec 2023

Did you know?

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

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc