Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

rollup-plugin-gzip

Package Overview
Dependencies
Maintainers
0
Versions
19
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rollup-plugin-gzip

Compress your Rollup / Vite bundle with Gzip or Brotli

  • 4.0.1
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
76K
increased by4.86%
Maintainers
0
Weekly downloads
 
Created
Source

rollup-plugin-gzip

ci status

Creates a compressed .gz / .br artifact for your Rollup / Vite bundle.

COMPATIBILITY NOTE: This version is compatible with rollup >= 2.0.0

  • For rollup >= 0.60 - 1.x, use version 2.x of this plugin
  • For older versions of rollup, use version 1.x of this plugin

Installation

npm install --save-dev rollup-plugin-gzip

Usage

import { rollup } from 'rollup'
import gzipPlugin from 'rollup-plugin-gzip'

rollup({
  input: 'src/index.js',
  plugins: [gzipPlugin()],
}).then(/* ... */)

NOTE: This plugin is an ES module. If you import it using require(), you have to point to the default export via require('rollup-plugin-gzip').default

Configuration

filter RegExp | (fileName: string) => boolean

Control which of the output files to compress.

Defaults to /\.(js|mjs|cjs|json|css|html|wasm|svg)$/

gzipOptions object

GZIP compression options, see https://nodejs.org/api/zlib.html#zlib_class_options

minSize number

Specified the minimum size in Bytes for a file to get compressed. Files that are smaller than this threshold will not be compressed. This does not apply to the files specified through additionalFiles!

additionalFiles string[]

This option allows you to compress additional files outside of the main rollup bundling process.

additionalFilesDelay number

This options sets a delay (ms) before the plugin compresses the files specified through additionalFiles.

Defaults to 0 for Rollup >= 2.0.0, 2000 for older versions of Rollup

customCompression (content: string | Buffer) => string | Buffer | Promise<string | Buffer>

Set a custom compression algorithm. The function can either return the compressed contents synchronously, or otherwise return a promise for asynchronous processing.

fileName string | (fileName: string) => string

Set a custom file name convention for the compressed files. Can be a suffix string or a function returning the file name.

Defaults to ".gz"

Examples

NOTE: These examples use Rollup's JavaScript API. For Rollup configuration file examples, check out the /examples directory.

Brotli Compression

Since Node 11.7.0 you can use Node's built-in Brotli compression:

import { brotliCompress } from 'zlib'
import { promisify } from 'util'
import { rollup } from 'rollup'
import gzipPlugin from 'rollup-plugin-gzip'

const brotliPromise = promisify(brotliCompress)

rollup({
  input: 'src/index.js',
  plugins: [
    gzipPlugin({
      customCompression: content => brotliPromise(Buffer.from(content)),
      fileName: '.br',
    }),
  ],
}).then(/* ... */)

For Node < 11.7.0 you need the external brotli module:

import { compress } from 'brotli'
import { rollup } from 'rollup'
import gzipPlugin from 'rollup-plugin-gzip'

rollup({
  input: 'src/index.js',
  plugins: [
    gzipPlugin({
      customCompression: content => compress(Buffer.from(content)),
      fileName: '.br',
    }),
  ],
}).then(/* ... */)

Zopfli Compression

Zopfli support is available through several different external packages, each of which comes with advantages and disadvantages:

import { gzipSync } from 'node-zopfli'
import { rollup } from 'rollup'
import gzipPlugin from 'rollup-plugin-gzip'

rollup({
  input: 'src/index.js',
  plugins: [
    gzipPlugin({
      customCompression: content => gzipSync(Buffer.from(content)),
    }),
  ],
}).then(/* ... */)
  • @gfx/zopfli - WebAssembly version, faster installation, slower compression
import { gzipAsync } from '@gfx/zopfli'
import { rollup } from 'rollup'
import gzipPlugin from 'rollup-plugin-gzip'

rollup({
  input: 'src/index.js',
  plugins: [
    gzipPlugin({
      customCompression: content =>
        gzipAsync(Buffer.from(content), { numiterations: 15 }),
    }),
  ],
}).then(/* ... */)

Compressing into multiple formats

To support compressing your bundle into multiple different formats, you can add this plugin multiple times with different configurations:

import { brotliCompress } from 'zlib'
import { promisify } from 'util'
import { rollup } from 'rollup'
import gzipPlugin from 'rollup-plugin-gzip'

const brotliPromise = promisify(brotliCompress)

rollup({
  input: 'src/index.js',
  plugins: [
    // GZIP compression as .gz files
    gzipPlugin(),
    // Brotil compression as .br files
    gzipPlugin({
      customCompression: content => brotliPromise(Buffer.from(content)),
      fileName: '.br',
    }),
  ],
}).then(/* ... */)

License

MIT

Keywords

FAQs

Package last updated on 18 Aug 2024

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc