npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

email-minifier

v1.0.5

Published

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

Downloads

244

Readme

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

| Option | Description | Default | |--------------------------------|-----------------|---------| | minifyIds | Minifiy id attributes used in style tags | true | | minifyClasses | Minifiy class attributes used in style tags | true | | minifyDatasets | Minifiy data-* attributes used in style tags | true | | removeUnusedAttrs | Remove custom attributes unused in style tags | false | | minifyStyles | Minifiy CSS content for all the style tags | true |

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 | Email | Original Size | Minified Size | Elapsed Time | | ----------------------------- | ------------- | ------------- | ------------ | |Holiday Cheer|33.09kb|32.36kb|580.30ms| |Membership Discount|104.00kb|37.97kb|93.61ms| |Movies for Christmas|289.47kb|58.30kb|138.13ms|

The emails above are generated from unlayer.

License

See LICENSE