svgpack
Fast SVG optimizer for build pipelines, implemented in Rust.
This repository contains the first working version of svgpack as a Rust workspace with:
- CLI command entrypoint
- Core optimization pipeline orchestration
- Basic parser helpers
- MVP optimizer passes
- Sprite generation (
symbolformat) - React component code generation
- Duplicate detection
- Basic SVG analysis reporting
Current status
Version target: v0.1.0 (MVP foundation).
Implemented:
optimizeflow (single file or directory)--in-place,--dry-run,--stats, and--format jsonspritesubcommandcodegensubcommand (--framework react)dedupsubcommandanalyzesubcommand
Workspace layout
svgpack/
├── Cargo.toml
├── crates/
│ ├── svgpack_cli/
│ ├── svgpack_core/
│ ├── svgpack_parser/
│ ├── svgpack_optimizer/
│ ├── svgpack_sprite/
│ ├── svgpack_codegen/
│ ├── svgpack_dedup/
│ ├── svgpack_analysis/
│ └── svgpack_config/
└── tests/
└── fixtures/
Build
Requirements:
- Rust stable toolchain
- Cargo
Commands:
CLI usage
Run via cargo:
Optimize:
Optimize in place:
Dry run:
JSON output:
Sprite generation:
React codegen:
Duplicate detection:
Analyze:
Config
You can pass a JSON config with --config:
Supported now:
presetmultipassmax_passespassesmap (enabled,precision,prefix)
Roadmap
v0.2: stronger path/transforms optimization + better SVGO parity.v0.3: sprite improvements + React/Vue codegen hardening.v0.4: build-tool plugins (Vite/Rspack/Webpack) + watch mode.v1.0: stable API, regression corpus, performance benchmarks.
Notes
- This is a first version focused on architecture and working command flow.
- Path-data optimization is still minimal and should be expanded in the next iteration.
- Visual regression tests and SVGO compatibility mapping are planned next.