1.1.0 • Published 5 months ago

astro-squeeze v1.1.0

Weekly downloads
-
License
EUPL-1.2
Repository
github
Last release
5 months ago

A high-performance gzip and brotli compressor for Astro written in Rust.

Astro Squeeze compresses your static files ahead of time for optimal performance during asset delivery.

Table of Contents

Introduction

Astro Squeeze is designed to smoothly integrate into your Astro project. It compresses your assets using both gzip and brotli. This leads to reduced file sizes and improved page load times without any manual intervention.

Quickstart

Install Astro Squeeze using your preferred package manager:

# Using NPM
npx astro add astro-squeeze

# Using Yarn
yarn astro add astro-squeeze

# Using PNPM
pnpm astro add astro-squeeze

After installation, simply build your project. Look for the compression messages in your build log:

pnpm build

Usage

Basic Integration

  1. First, add the package as a development dependency:

    pnpm add --dev astro-squeeze
  2. Then, configure it in your astro.config.* file by updating the integrations property:

    import { defineConfig } from "astro/config";
    import squeezer from "astro-squeeze";
    
    export default defineConfig({
      // ...
      integrations: [
        // other integrations,
        squeezer(),
      ],
    });

Configuration Options

You can customize Astro Squeeze by passing options to enable or disable specific compression types or limit the file formats:

  • Enable/Disable Specific Compression

    import { defineConfig } from "astro/config";
    import squeezer from "astro-squeeze";
    
    export default defineConfig({
      // ...
      integrations: [
        // other integrations,
        squeezer({ gzip: true, brotli: false }),
      ],
    });
  • Custom File Extensions

    By default, Astro Squeeze compresses files with the following extensions:

    [".css", ".js", ".html", ".xml", ".cjs", ".mjs", ".svg", ".txt"]

    To restrict compression to specific file types, set the fileExtensions property:

    import { defineConfig } from "astro/config";
    import squeezer from "astro-squeeze";
    
    export default defineConfig({
      // ...
      integrations: [
        // other integrations,
        squeezer({
          fileExtensions: [".html"] // only compress HTML files
        }),
      ],
    });

Important Notes

  1. Integration Order: Ensure that Astro Squeeze is the last integration in the integrations array. This guarantees that all generated files are available for compression.
  2. Static Exports: Astro Squeeze works only with static exports. SSR does not generate compressible assets ahead of time.

Credits

Special thanks to sondr3's astro-compressor for serving as a great source of inspiration.

License

This project is licensed under the EUPL-1.2 license.

1.1.0

5 months ago

1.0.0

5 months ago

0.2.3

5 months ago

0.2.3-0

5 months ago