A fast, minimal JavaScript package manager written in Rust.
- ⏬ Fast installation using async I/O and parallel downloads
- 🗄️ Caching for packages to avoid redundant downloads
- 💾 Low disk and memory usage via deduplication and streaming
- 🛠️ CLI with color-coded outputs and progress bars
- ⚡ Fast dependency resolution
Installing redux package (small size, ~16 KB uncompressed)
| Tool | Cold Install (s) | Warm Install (s) | Disk Usage (MB) |
|---|---|---|---|
| blitz | 0.05707380933333333 | 0.05526689133333334 | 0.396 |
| npm | 2.0370520173333335 | 1.7289675873333337 | 3.3 |
| yarn | 1.3726210586666667 | 2.351056052 | 3.3 |
| pnpm | 0.5369854126666667 | 0.5695310960000001 | 3.5 |
Installing three package (medium size, ~1.5MB uncompressed)
| Tool | Cold Install (s) | Warm Install (s) | Disk Usage (MB) |
|---|---|---|---|
| blitz | 1.3716558413333333 | 1.4117071753333332 | 36 |
| npm | 3.3465759593333337 | 1.7949767100000003 | 42 |
| yarn | 2.258768798 | 2.1892398366666668 | 34 |
| pnpm | 0.5708736986666667 | 0.5707977206666667 | 35 |
Installing lodash package (large size, ~4MB uncompressed)
| Tool | Cold Install (s) | Warm Install (s) | Disk Usage (MB) |
|---|---|---|---|
| blitz | 1.1797829266666666 | 1.132625332 | 3.0 |
| npm | 1.3578584366666666 | 1.439510522 | 3.1 |
| yarn | 3.1947364740000004 | 1.9441966999999998 | 2.7 |
| pnpm | 0.563738518 | 0.5677060960000001 | 3.2 |
Clone this repository:
git clone https://github.com/JinnyWong/blitz
cd blitzRun and build the project:
cargo build --release- This will compile blitz in optimized mode and output to
target/release/blitz. - You can use
cargo buildif you're still developing/testing.
If you want to install it as a global CLI tool:
cargo install --path .To run integration tests:
cargo testTo run benchmarking script:
chmod +x bench.sh
./bench.sh- Install a package
cargo run -- install <package_name>
blitz install - List cache packages
cargo run -- cache
blitz cache- Clear the entire cache directory:
cargo run -- cache --clear
blitz cache --clearFor more info on this project, please refer to its documentation: 🔗link
