# svgc
[](https://crates.io/crates/svgc)
Rust version of the [SvgCompress](https://github.com/pasabanov/SvgCompress/) tool.
## Description
`svgc` is a tool for compressing SVG files by removing unnecessary whitespace, comments, metadata and some other data. It also supports optimization with [SVGO](https://github.com/svg/svgo) and compression into [SVGZ](https://ru.wikipedia.org/wiki/SVG#SVGZ). The tool helps reduce the file size and clean up SVG files for better performance and preparing for release versions.
## Installation
#### Dependencies
[Cargo](https://doc.rust-lang.org/cargo/getting-started/installation.html) needs to be installed in order to install or build the utility.
(Optional) If you want to use `--svgo` option, install [SVGO](https://github.com/svg/svgo) as well.
### With Cargo (recommended):
```sh
cargo install svgc
```
### From GitHub (build yourself):
```sh
git clone https://github.com/pasabanov/svgc
cd svgc
cargo build --profile release
```
The built file will be located in the `target/release` directory.
## Usage
To compress SVG files, run the script with the following command:
```sh
svgc [options] paths
```
## Options
`-h`, `--help` Show this help message and exit
`-v`, `--version` Show the version of the program
`-r`, `--recursive` Recursively process directories
`-f`, `--remove-fill` Remove `fill="..."` attributes
`-o`, `--svgo` Use SVGO if it is installed on the system
`-z`, `--svgz` Compress to .svgz format after optimization
`-n`, `--no-default` Do not perform default optimizations (if you only want to use SVGO, compress to .svgz, or perform both operations)
`-q`, `--quiet` Only output error messages, not regular status messages
## Examples
1. Compress a single SVG file:
```sh
svgc my-icon.svg
```
2. Compress all SVG files in some directories and files:
```sh
svgc my-icons-directory1 my-icon.svg directory2 icon2.svg
```
3. Compress all SVG files in a directory and all subdirectories:
```sh
svgc -r my-icons-directory
```
4. Compress an SVG file removing every `fill=...` attribute in it (making it monocolor):
```sh
svgc -f my-icon.svg
```
5. Compress all SVG files in a directory and all subdirectories, removing `fill` attributes, then optimize with SVGO, then compress to .svgz:
```sh
svgc -rfoz my-icons-directory
```
## License
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
## Copyright
2024 Petr Alexandrovich Sabanov
## Metrics

