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