Compressors receive a stream containing the final contents of bundles and source maps as they is being written. They return a new stream, which may transform the data in some way, and a type containing a file extension to append. If no type is returned, then the returned stream replaces the original file.

import {Compressor} from '@parcel/plugin';

export default new Compressor({
async compress({stream}) {
return {
stream: gzipStream(stream),
type: 'gz'

Relevant API


Compressor parcel/packages/core/types/index.js:1628

type Compressor = {|
    stream: Readable,
    options: PluginOptions,
    logger: PluginLogger,
  |}): Async<?{|
    stream: Readable,
    type?: string,