
Security News
vlt Launches "reproduce": A New Tool Challenging the Limits of Package Provenance
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
rollup-plugin-gzip
Advanced tools
Creates a compressed .gz
artifact for your Rollup bundle.
COMPATIBILITY NOTE: Version 2.x is compatible with rollup 0.60 and above! For older versions of rollup, use version 1.x of this plugin.
npm install --save-dev rollup-plugin-gzip
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 viarequire('rollup-plugin-gzip').default
filter RegExp | (fileName: string) => boolean
Control which of the output files to compress.
Defaults to /\.(js|mjs|json|css|html)$/
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"
NOTE: These examples use Rollup's JavaScript API. For Rollup configuration file examples, check out the
/examples
directory.
Since Node 11.7.0 you can use Node's built-in Brotli compression:
import { brotliCompressSync } from 'zlib'
import { rollup } from 'rollup'
import gzipPlugin from 'rollup-plugin-gzip'
rollup({
input: 'src/index.js',
plugins: [
gzipPlugin({
customCompression: content =>
brotliCompressSync(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 support is available through several different external packages, each of which comes with advantages and disadvantages:
node-zopfli
(or node-zopfli-es
) - native version, longer installation time, might require build toolingimport { 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 compressionimport { 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(/* ... */)
To support compressing your bundle into multiple different formats, you can add this plugin multiple times with different configurations:
import { brotliCompressSync } from 'zlib'
import { rollup } from 'rollup'
import gzipPlugin from 'rollup-plugin-gzip'
rollup({
input: 'src/index.js',
plugins: [
// GZIP compression as .gz files
gzipPlugin(),
// Brotil compression as .br files
gzipPlugin({
customCompression: content =>
brotliCompressSync(Buffer.from(content)),
fileName: '.br',
}),
],
}).then(/* ... */)
MIT
FAQs
Compress your Rollup / Vite bundle with Gzip or Brotli
The npm package rollup-plugin-gzip receives a total of 59,596 weekly downloads. As such, rollup-plugin-gzip popularity was classified as popular.
We found that rollup-plugin-gzip demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
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.
Security News
vlt's new "reproduce" tool verifies npm packages against their source code, outperforming traditional provenance adoption in the JavaScript ecosystem.
Research
Security News
Socket researchers uncovered a malicious PyPI package exploiting Deezer’s API to enable coordinated music piracy through API abuse and C2 server control.
Research
The Socket Research Team discovered a malicious npm package, '@ton-wallet/create', stealing cryptocurrency wallet keys from developers and users in the TON ecosystem.