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

webpack-tinypng-loader

v1.0.1

Published

Optimizes your images with TinyPNG/TinyJPG and persistently caches the results to avoid eating up your API rate limit.

Downloads

7

Readme

Webpack tinypng loader

Optimizes your images with TinyPNG/TinyJPG and persistently caches the results to avoid eating up your API rate limit.

TinyPNG uses smart lossy compression techniques to reduce the file size of your PNG files. By selectively decreasing the number of colors in the image, fewer bytes are required to store the data. The effect is nearly invisible but it makes a very large difference in file size! Similarly, TinyJPG reduces the file size of your JPEG images. Every uploaded image is analyzed to apply the best possible JPEG encoding. Based on the content of your image an optimal strategy is chosen. The result is a quality image without wasting storage or bandwidth!

TinyPNG/TinyJPG provides 500 free compressions each month. If you reach your compression limit the API, you must upgrade your account by entering your payment details on the API account page.

Tinify Loader caches the results of your requests so you won't have to worry about hitting your free compression limit unless you work with a particularly large number of images.


Important:

This loader only handles optimization of your images.
You still need a loader to handle images in your webpack bundle such as url-loader or file-loader.


Table of Contents

Install

npm install webpack-tinypng-loader --save-dev

Setup

Get API Key

You can sign up for a developer account for free at tinypng.com/developers.

TinyPNG Sign Up

(Fun fact: This screenshot was compressed with TinyPNG. Reducing its size from 213.2 KB to just 58.2 KB—that's a 73% size reduction!)

Once you have setup your account, you'll be sent a link to login and view your API key and usage data on your dashboard.

Usage

webpack.config.js
module.exports = {
  module: {
    rules: [
      {
        test: /\.(png|jpe?g)$/,
        use: [
          {
            loader: 'tinify-loader',
            options: {
              apikey: TINYPNG_KEY
            }
          }
        ]
      }
    ]
  }
};

Options

|Name|Type|Default|Description| |:---|:---|:------|:----------| |apikey|{String}|undefined|Developer API key from TinyPNG/TinyJPG| |cache|{String}|path.resolve('.cache/tinify')|Path to directory where processed images will be cached.|

options.apikey

This is where you can directly provide your API key found on your TinyPNG/TinyJPG dashboard.

However, there are options for not storing your API key directly in your webpack.config.js. If this option is not provided, Tinify Loader will check for an environmental variable process.env.TINYPNG_KEY.

TINYPNG_KEY=l4P-GCBT8K3uJRmkUtd3K5WUcdVma3Cp webpack

Note: This is not a working API key.

You also have the option of placing your API key in file located at ~/.tinypng. This can be the simplest solution for working with the Tinify Loader in multiple projects and also allows for easy interoperability with tinypng-cli.

options.cache

An absolute path to where you would like your cache files to be stored. If no value is provided, the default is path.resolve('.cache/tinify').

References

Tinify Loader