{"_id":"compression-rspack-plugin","_rev":"4-d7953549e4c03a39688b28cdcd453f73","name":"compression-rspack-plugin","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"compression-rspack-plugin","version":"0.1.0","keywords":["rspack","rspack-plugin","compression","gzip","brotli","deflate","rust","napi","parallel","performance"],"author":{"name":"ramon-villain"},"license":"MIT","_id":"compression-rspack-plugin@0.1.0","maintainers":[{"name":"ramonvillain","email":"ramon.villain@gmail.com"}],"homepage":"https://github.com/ramon-villain/compression-rspack-plugin#readme","bugs":{"url":"https://github.com/ramon-villain/compression-rspack-plugin/issues"},"dist":{"shasum":"6eaa8d754cb204a13bbff6404784e7dd33cef6b9","tarball":"https://registry.npmjs.org/compression-rspack-plugin/-/compression-rspack-plugin-0.1.0.tgz","fileCount":26,"integrity":"sha512-3034lWiPq7yzAWh5C6SdMVtBAOXkgzSTfI7PR8OLKzDwbGjJe7kMTYbggGFK72OIqZSTNe1hlpqu0ZP1DoOmGw==","signatures":[{"sig":"MEYCIQDAn9Lwp6ycQANYm+Q3u/0rFBUxFr1EOcBmkR6rku/xlgIhALGD918v2HPz9s2kRkehoxUfzKgVXl/kdjH3zNnBE/8H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63228},"main":"dist/index.js","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","x86_64-unknown-linux-musl"],"binaryName":"compression-rspack-plugin"},"type":"module","types":"dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"f6ddecd1f683e815d6686944f2bc416dca17f2f3","scripts":{"lint":"biome check .","test":"NODE_OPTIONS='--experimental-vm-modules' jest","build":"pnpm build:native && pnpm build:ts","clean":"rm -rf dist","lint:rs":"cargo fmt --check && cargo clippy --lib -- -D warnings","pretest":"pnpm build:ts","build:ts":"tsc -p tsconfig.build.json && cp lib/options.json dist/options.json","lint:fix":"biome check --write .","test:rust":"cargo test --lib","typecheck":"tsc --noEmit","test:update":"NODE_OPTIONS='--experimental-vm-modules' jest -u","build:native":"napi build --platform --release","prepublishOnly":"pnpm clean && pnpm build"},"_npmUser":{"name":"ramonvillain","email":"ramon.villain@gmail.com"},"repository":{"url":"git+https://github.com/ramon-villain/compression-rspack-plugin.git","type":"git"},"_npmVersion":"11.9.0","description":"Rust-native parallel compression plugin for Rspack. Drop-in replacement for compression-webpack-plugin with gzip, brotli, deflate, and deflateRaw — all parallelized across CPU cores via Rust + rayon.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"p-limit":"7.3.0","schema-utils":"4.3.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.8.1","devDependencies":{"jest":"30.0.0-alpha.6","memfs":"4.17.0","typescript":"6.0.2","@types/node":"24.11.0","@napi-rs/cli":"3.0.0-alpha.86","@rspack/core":"2.0.0-beta.2","@biomejs/biome":"2.4.9","webpack-stats-plugin":"1.1.3","browserslist-load-config":"1.0.1"},"peerDependencies":{"@rspack/core":">=1.0.0"},"optionalDependencies":{"compression-rspack-plugin-darwin-x64":"0.1.0","compression-rspack-plugin-darwin-arm64":"0.1.0","compression-rspack-plugin-linux-x64-gnu":"0.1.0","compression-rspack-plugin-linux-x64-musl":"0.1.0","compression-rspack-plugin-linux-arm64-gnu":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/compression-rspack-plugin_0.1.0_1774690855698_0.5440971164869222","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"compression-rspack-plugin","version":"0.1.1","keywords":["rspack","rspack-plugin","compression","gzip","brotli","deflate","rust","napi","parallel","performance"],"author":{"name":"ramon-villain"},"license":"MIT","_id":"compression-rspack-plugin@0.1.1","maintainers":[{"name":"ramonvillain","email":"ramon.villain@gmail.com"}],"homepage":"https://github.com/ramon-villain/compression-rspack-plugin#readme","bugs":{"url":"https://github.com/ramon-villain/compression-rspack-plugin/issues"},"dist":{"shasum":"9ccf2da53a03eaf3c41a0163bdf82e80edaf2add","tarball":"https://registry.npmjs.org/compression-rspack-plugin/-/compression-rspack-plugin-0.1.1.tgz","fileCount":26,"integrity":"sha512-1Nxz057T70bDZqxCVFHHpbhF2E67NHkJ0Go/IhU/uopC3nCPfBr2jMDS7NSJCX5PvMH7QV9q/ZfZx3zTi4jh5g==","signatures":[{"sig":"MEUCIHZv7mfXrxdGYq4jwmH2OCffLT5fPcBBjJMxbEirPi50AiEApsOg8oq27AypbC1MLHOeSfedWA6lJqHPrgvgQ5NmLek=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":63394},"main":"dist/index.js","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","x86_64-unknown-linux-musl"],"binaryName":"compression-rspack-plugin"},"type":"module","types":"dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"32257ecae32df90a2c808ae006443670c24aa863","scripts":{"lint":"biome check .","test":"NODE_OPTIONS='--experimental-vm-modules' jest","build":"pnpm build:native && pnpm build:ts","clean":"rm -rf dist","lint:rs":"cargo fmt --check && cargo clippy --lib -- -D warnings","pretest":"pnpm build:ts","build:ts":"tsc -p tsconfig.build.json && cp lib/options.json dist/options.json","lint:fix":"biome check --write .","test:rust":"cargo test --lib","typecheck":"tsc --noEmit","test:update":"NODE_OPTIONS='--experimental-vm-modules' jest -u","build:native":"napi build --platform --release","prepublishOnly":"pnpm clean && pnpm build"},"_npmUser":{"name":"ramonvillain","email":"ramon.villain@gmail.com"},"repository":{"url":"git+https://github.com/ramon-villain/compression-rspack-plugin.git","type":"git"},"_npmVersion":"11.9.0","description":"Rust-native parallel compression plugin for Rspack. Drop-in replacement for compression-webpack-plugin with gzip, brotli, deflate, and deflateRaw — all parallelized across CPU cores via Rust + rayon.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"p-limit":"7.3.0","schema-utils":"4.3.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.8.1","devDependencies":{"jest":"30.0.0-alpha.6","memfs":"4.17.0","typescript":"6.0.2","@types/node":"24.11.0","@napi-rs/cli":"3.0.0-alpha.86","@rspack/core":"2.0.0-beta.2","@biomejs/biome":"2.4.9","webpack-stats-plugin":"1.1.3","browserslist-load-config":"1.0.1"},"peerDependencies":{"@rspack/core":">=1.0.0"},"optionalDependencies":{"compression-rspack-plugin-darwin-x64":"0.1.1","compression-rspack-plugin-darwin-arm64":"0.1.1","compression-rspack-plugin-linux-x64-gnu":"0.1.1","compression-rspack-plugin-linux-x64-musl":"0.1.1","compression-rspack-plugin-linux-arm64-gnu":"0.1.1"},"_npmOperationalInternal":{"tmp":"tmp/compression-rspack-plugin_0.1.1_1774691660321_0.9742441887833906","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"compression-rspack-plugin","version":"0.1.2","keywords":["rspack","rspack-plugin","compression","gzip","brotli","deflate","rust","napi","parallel","performance"],"author":{"name":"ramon-villain"},"license":"MIT","_id":"compression-rspack-plugin@0.1.2","maintainers":[{"name":"ramonvillain","email":"ramon.villain@gmail.com"}],"homepage":"https://github.com/ramon-villain/compression-rspack-plugin#readme","bugs":{"url":"https://github.com/ramon-villain/compression-rspack-plugin/issues"},"dist":{"shasum":"15c7a926f9964e8bcbf1489aa532e1622970583c","tarball":"https://registry.npmjs.org/compression-rspack-plugin/-/compression-rspack-plugin-0.1.2.tgz","fileCount":25,"integrity":"sha512-QDHDgBPzbpIESwD6C7fj/LARFkqJBzm/+f4Krsw0Mot1DeT0NTif9FIu6YyyX/UswSBXiz5Fo0l2Fj86tQ7R4Q==","signatures":[{"sig":"MEUCIQDcfrbDnXGgozvow8+8esnOy99gHx95MIljmUVzMZYMCAIgWw2b1qCZysHJ7wkUwjTT7ArqbVIrl4x7QJEH5TaP9pw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62579},"main":"dist/index.js","napi":{"targets":["aarch64-apple-darwin","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","x86_64-unknown-linux-musl"],"binaryName":"compression-rspack-plugin"},"type":"module","types":"dist/index.d.ts","engines":{"node":">=24"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"7efcbfeef4b6d8228df51e03bd17fbc6acd5ea1f","scripts":{"lint":"biome check .","test":"NODE_OPTIONS='--experimental-vm-modules' jest","build":"pnpm build:native && pnpm build:ts","clean":"rm -rf dist","lint:rs":"cargo fmt --check && cargo clippy --lib -- -D warnings","pretest":"pnpm build:ts","build:ts":"tsc -p tsconfig.build.json && cp lib/options.json dist/options.json","lint:fix":"biome check --write .","test:rust":"cargo test --lib","typecheck":"tsc --noEmit","test:update":"NODE_OPTIONS='--experimental-vm-modules' jest -u","build:native":"napi build --platform --release","prepublishOnly":"pnpm clean && pnpm build"},"_npmUser":{"name":"ramonvillain","email":"ramon.villain@gmail.com"},"repository":{"url":"git+https://github.com/ramon-villain/compression-rspack-plugin.git","type":"git"},"_npmVersion":"11.9.0","description":"Rust-native parallel compression plugin for Rspack. Drop-in replacement for compression-webpack-plugin with gzip, brotli, deflate, and deflateRaw — all parallelized across CPU cores via Rust + rayon.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"p-limit":"7.3.0","schema-utils":"4.3.2"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.8.1","devDependencies":{"jest":"30.0.0-alpha.6","memfs":"4.17.0","typescript":"6.0.2","@types/node":"24.11.0","@napi-rs/cli":"3.0.0-alpha.86","@rspack/core":"2.0.0-beta.2","@biomejs/biome":"2.4.9","webpack-stats-plugin":"1.1.3","browserslist-load-config":"1.0.1"},"peerDependencies":{"@rspack/core":">=1.0.0"},"optionalDependencies":{"compression-rspack-plugin-darwin-x64":"0.1.2","compression-rspack-plugin-darwin-arm64":"0.1.2","compression-rspack-plugin-linux-x64-gnu":"0.1.2","compression-rspack-plugin-linux-x64-musl":"0.1.2","compression-rspack-plugin-linux-arm64-gnu":"0.1.2"},"_npmOperationalInternal":{"tmp":"tmp/compression-rspack-plugin_0.1.2_1774692040429_0.5947319589654256","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"compression-rspack-plugin","version":"0.2.0","type":"module","description":"Rust-native parallel compression plugin for Rspack. Drop-in replacement for compression-webpack-plugin with gzip, brotli, deflate, and deflateRaw — all parallelized across CPU cores via Rust + rayon.","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"napi":{"binaryName":"compression-rspack-plugin","targets":["aarch64-apple-darwin","x86_64-apple-darwin","x86_64-unknown-linux-gnu","aarch64-unknown-linux-gnu","x86_64-unknown-linux-musl"]},"scripts":{"build:native":"napi build --platform --release","build:ts":"tsc -p tsconfig.build.json && cp lib/options.json dist/options.json","build":"pnpm build:native && pnpm build:ts","clean":"rm -rf dist","test:rust":"cargo test --lib","test":"NODE_OPTIONS='--experimental-vm-modules' jest","test:update":"NODE_OPTIONS='--experimental-vm-modules' jest -u","typecheck":"tsc --noEmit","lint":"biome check .","lint:fix":"biome check --write .","lint:rs":"cargo fmt --check && cargo clippy --lib -- -D warnings","prepublishOnly":"pnpm clean && pnpm build","prepare":"husky"},"keywords":["rspack","rspack-plugin","compression","gzip","brotli","deflate","rust","napi","parallel","performance"],"author":{"name":"ramon-villain"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/ramon-villain/compression-rspack-plugin.git"},"packageManager":"pnpm@10.8.1","engines":{"node":">=24"},"peerDependencies":{"@rspack/core":">=1.0.0"},"optionalDependencies":{"compression-rspack-plugin-darwin-arm64":"0.2.0","compression-rspack-plugin-darwin-x64":"0.2.0","compression-rspack-plugin-linux-arm64-gnu":"0.2.0","compression-rspack-plugin-linux-x64-gnu":"0.2.0","compression-rspack-plugin-linux-x64-musl":"0.2.0"},"dependencies":{"p-limit":"7.3.0","schema-utils":"4.3.3"},"devDependencies":{"@biomejs/biome":"2.4.9","@napi-rs/cli":"3.5.1","@rspack/core":"2.0.0-beta.2","@swc/core":"1.15.21","@swc/jest":"0.2.39","@types/jest":"30.0.0","@types/node":"24.12.0","browserslist-load-config":"1.0.1","husky":"9.1.7","jest":"30.3.0","memfs":"4.57.1","typescript":"6.0.2","webpack-stats-plugin":"1.1.3"},"gitHead":"ddd3ff9e335778e320327fe88660e99dee37b84c","_id":"compression-rspack-plugin@0.2.0","bugs":{"url":"https://github.com/ramon-villain/compression-rspack-plugin/issues"},"homepage":"https://github.com/ramon-villain/compression-rspack-plugin#readme","_nodeVersion":"24.14.0","_npmVersion":"11.9.0","dist":{"integrity":"sha512-pigLbhr0+M/vAQti9BzfJInWMhTHbcILdaj9cVJj5PQOSAoXPt7dY3tVNgFK486Rl5TdTvMYJLYqWZptmDGmsg==","shasum":"8e8252fc3c216709abf1d1fabd0f806471dcb464","tarball":"https://registry.npmjs.org/compression-rspack-plugin/-/compression-rspack-plugin-0.2.0.tgz","fileCount":25,"unpackedSize":64066,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCSd2wK0qgyJbRExvvbkZAtpurN6a3hYKwbOO/pcySLJwIgK1UvnNlPDbeAqrnnASD4QkX/1dwg78oeFPd9zHMz8f4="}]},"_npmUser":{"name":"ramonvillain","email":"ramon.villain@gmail.com"},"directories":{},"maintainers":[{"name":"ramonvillain","email":"ramon.villain@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/compression-rspack-plugin_0.2.0_1774889812218_0.2502841785786949"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-28T09:40:55.558Z","modified":"2026-03-30T16:56:52.454Z","0.1.0":"2026-03-28T09:40:55.846Z","0.1.1":"2026-03-28T09:54:20.457Z","0.1.2":"2026-03-28T10:00:40.576Z","0.2.0":"2026-03-30T16:56:52.354Z"},"bugs":{"url":"https://github.com/ramon-villain/compression-rspack-plugin/issues"},"author":{"name":"ramon-villain"},"license":"MIT","homepage":"https://github.com/ramon-villain/compression-rspack-plugin#readme","keywords":["rspack","rspack-plugin","compression","gzip","brotli","deflate","rust","napi","parallel","performance"],"repository":{"type":"git","url":"git+https://github.com/ramon-villain/compression-rspack-plugin.git"},"description":"Rust-native parallel compression plugin for Rspack. Drop-in replacement for compression-webpack-plugin with gzip, brotli, deflate, and deflateRaw — all parallelized across CPU cores via Rust + rayon.","maintainers":[{"name":"ramonvillain","email":"ramon.villain@gmail.com"}],"readme":"# compression-rspack-plugin\n\n[![npm version](https://img.shields.io/npm/v/compression-rspack-plugin)](https://www.npmjs.com/package/compression-rspack-plugin) [![CI](https://github.com/ramon-villain/compression-rspack-plugin/actions/workflows/ci.yml/badge.svg)](https://github.com/ramon-villain/compression-rspack-plugin/actions/workflows/ci.yml) [![license](https://img.shields.io/npm/l/compression-rspack-plugin)](LICENSE) [![npm downloads](https://img.shields.io/npm/dm/compression-rspack-plugin)](https://www.npmjs.com/package/compression-rspack-plugin) [![coverage](https://img.shields.io/badge/coverage-100%25-brightgreen)]() [![awesome-rstack](https://img.shields.io/badge/awesome-rstack-blue)](https://github.com/rstackjs/awesome-rstack)\n\nRust-native parallel compression plugin for [Rspack](https://rspack.dev). Drop-in replacement for [compression-webpack-plugin](https://github.com/webpack/compression-webpack-plugin).\n\nCompresses assets **in parallel** across all CPU cores via Rust + [rayon](https://github.com/rayon-rs/rayon), instead of serially on the Node.js main thread.\n\n## Install\n\n```bash\nnpm install compression-rspack-plugin\n# or\npnpm add compression-rspack-plugin\n# or\nyarn add compression-rspack-plugin\n```\n\nPrebuilt binaries are available for macOS (arm64, x64), Linux (x64 glibc, arm64 glibc, x64 musl). The correct binary is installed automatically via platform-specific optional dependencies.\n\n## Usage\n\n```js\nimport { CompressionRspackPlugin } from 'compression-rspack-plugin'\n\nexport default {\n  plugins: [\n    new CompressionRspackPlugin({ test: /\\.(js|css|html|json|svg)$/ }),\n    new CompressionRspackPlugin({ algorithm: 'brotliCompress', test: /\\.(js|css|html|json|svg)$/ }),\n  ],\n}\n```\n\n## Options\n\nSame interface as [compression-webpack-plugin](https://github.com/webpack/compression-webpack-plugin#options). Validated via `schema-utils`.\n\n| Option | Type | Default | Description |\n|---|---|---|---|\n| `algorithm` | `string \\| Function` | `\"gzip\"` | `\"gzip\"`, `\"brotliCompress\"`, `\"deflate\"`, `\"deflateRaw\"`, or custom callback |\n| `compressionOptions` | `object` | `{}` | Passed to the algorithm. Defaults to max quality per algorithm. |\n| `filename` | `string \\| Function` | `\"[path][base].gz\"` | Output template. `\"[path][base].br\"` for brotli. |\n| `test` | `RegExp \\| string \\| Array` | — | Include matching assets |\n| `include` | `RegExp \\| string \\| Array` | — | Include matching assets |\n| `exclude` | `RegExp \\| string \\| Array` | — | Exclude matching assets |\n| `threshold` | `number` | `0` | Min size in bytes |\n| `minRatio` | `number` | `0.8` | Only emit if compressed/original < this |\n| `deleteOriginalAssets` | `boolean \\| \"keep-source-map\" \\| Function` | `false` | Remove originals after compression |\n\n## Benchmarks\n\nTested on a production Rspack build (~1,400 assets, Apple M3 Pro 14-core).\n\n| | compression-webpack-plugin | compression-rspack-plugin |\n|---|---|---|\n| **Build time** (avg of 3) | 82.7s | **37.3s** (2.2x faster) |\n| **Compression phase** (RsDoctor) | 61.1s | **20.3s** (3.0x faster) |\n| .gz files | 1,410 | 1,411 |\n| .br files | 1,444 | 1,444 |\n| gzip-6 / 1 KB | 106 MiB/s | 143 MiB/s (1.4x) |\n| gzip-6 / 100 KB | 0.66 GiB/s | 2.77 GiB/s (4.2x) |\n| gzip-6 / 1 MB | 0.66 GiB/s | 3.30 GiB/s (5.0x) |\n| deflate-6 / 1 MB | 0.69 GiB/s | 2.03 GiB/s (2.9x) |\n\n## How it works\n\nBuilt-in algorithms (`gzip`, `brotliCompress`, `deflate`, `deflateRaw`) are handled by [flate2](https://github.com/rust-lang/flate2-rs) and [brotli](https://github.com/dropbox/rust-brotli) in Rust via a single napi-rs FFI call. Custom algorithms fall back to Node.js `zlib`.\n\n## Differences from compression-webpack-plugin\n\n| | compression-webpack-plugin | compression-rspack-plugin |\n|---|---|---|\n| Compression | Node.js zlib (serial) | Rust rayon (parallel) + zlib fallback |\n| Compilation cache | Yes | Not yet |\n| Child compilations | Yes (scoped via `thisCompilation`) | Yes |\n| `[compressed]` stats flag | Yes | Registered, not rendered by rspack 2.0 beta |\n\n## Development\n\n```bash\npnpm install        # install deps\npnpm build          # native addon + TypeScript\npnpm test           # JS tests (120 tests)\npnpm test:rust      # Rust unit tests\npnpm lint           # biome\npnpm lint:rs        # cargo fmt + clippy\npnpm typecheck      # tsc --noEmit\n```\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}