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.
brew install jzbrooks/repo/vgo
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.
The plugin adds the shrinkVectorArtwork
task to your project.
To incorporate the plugin in your build, configure maven central plugin resolution:
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.
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.
> 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
# 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
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