Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jzbrooks/vgo
vector graphic optimization
https://github.com/jzbrooks/vgo
Last synced: 22 days ago
JSON representation
vector graphic optimization
- Host: GitHub
- URL: https://github.com/jzbrooks/vgo
- Owner: jzbrooks
- License: mit
- Created: 2019-08-25T23:48:16.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-12-20T19:53:36.000Z (2 months ago)
- Last Synced: 2025-01-08T09:15:45.353Z (about 1 month ago)
- Language: Kotlin
- Homepage:
- Size: 78.3 MB
- Stars: 46
- Watchers: 5
- Forks: 2
- Open Issues: 12
-
Metadata Files:
- Readme: readme.md
- Changelog: changelog.md
- License: LICENSE
Awesome Lists containing this project
- trackawesomelist - jzbrooks/vgo (⭐39) - vgo is a tool for optimizing and converting between vector artwork representations. (Recently Updated / [Oct 01, 2024](/content/2024/10/01/README.md))
README
## vgo
vgo is a tool for optimizing and converting between vector artwork representations.
vgo is built on vgo-core, a library and intermediate representation for vector graphics which aims for readability and speed.
[](https://github.com/jzbrooks/vgo/actions/workflows/build.yml)
[](https://ossindex.sonatype.org/component/pkg:maven/com.jzbrooks/vgo)
[](https://ossindex.sonatype.org/component/pkg:maven/com.jzbrooks/vgo-core)
[](https://ossindex.sonatype.org/component/pkg:maven/com.jzbrooks/vgo-plugin)## Installation
#### Homebrew
`brew install jzbrooks/repo/vgo`#### Manually
Download the distribution from the releases page and ensure it has execute permission. On macOS & Linux run `chmod u+x vgo`.vgo requires Java 17.
## Gradle Plugin
The plugin aims to be fast and small by leveraging the JVM your gradle build is already using-no node-based tools are incorporated into your build.The `shrinkVectorArtwork` task is added to your project on plugin application.
To incorporate the plugin in your build, configure maven central plugin resolution:
```groovy
pluginManagement {
repositories {
mavenCentral()
gradlePluginPortal()
}
}
```Then, in the relevant project, add the plugin.
> [!NOTE]
> You must have the android tools sdk on your build classpath if you are converting SVGs to vector drawables.
> This is typically done by applying the Android Gradle Plugin.```groovy
plugins {
id 'com.jzbrooks.vgo'
}// Default configuration shown
vgo {
inputs = fileTree(projectDir) {
include '**/res/drawable*/*.xml'
}
outputs = inputs
showStatistics = true
format = OutputFormat.UNCHANGED
indent = 0
}
```> [!TIP]
> For Android projects a non-zero indent is better for readability and provides no apk size impact after AAPT processing.## Command Line Interface
```
> vgo [options] [file/directory]Options:
-h --help print this message
-o --output file or directory, if not provided the input will be overwritten
-s --stats print statistics on processed files to standard out
-v --version print the version number
--indent [value] write files with value columns of indentation
--format [value] output format (svg, vd, etc) - ALPHA
```> `java -jar vgo` for Windows
## Examples
```
# Optimize files specified from standard in
> find ./**/ic_*.xml | vgo# Optimize vector.xml and overwrite its contents
> vgo vector.xml# Optimize vector.xml and write the result into new_vector.xml
> vgo vector.xml -o new_vector.xml# Optimize multiple input sources write results to the
> vgo vector.xml -o new_vector.xml ./assets -o ./new_assets
```## Build instructions
This project uses the Gradle build system.
To build the binary: `./gradlew binary`
To run the tests: `./gradlew check`
To see all available tasks: `./gradlew tasks`