The plugin compiles JavaScript files into .zipline
files. These binary files are faster to launch.
The plugin offers setting the following variables which are used in compilation.
mainModuleId
: This is the JS module that your application's entrypoint function is in. If unset, fallback will be to the last key in the topologically sortedmodules
map in the generated ZiplineManifest.mainFunction
: This is the fully qualified function call to start your application, note it does not include the trailing()
to initiate the call.version
: This string is included in the manifest to identify the version of included code. A reasonable value is the Git SHA of the repo.
zipline {
mainFunction.set("my.application.package.path.prepareFunction")
}
The plugin serves compiled .zipline
files on the Webpack server. This is useful for local
development! You can run the webpack compiler continuously and .zipline
files will be served to
a ZiplineLoader
.
The Gradle plugin has a Download task that downloads the latest Zipline compiled code from the network to a local directory, to be packaged in the shipped app package.
plugins {
id("app.cash.zipline")
}
kotlin {
js {
browser()
binaries.library()
}
}
val downloadZipline by tasks.creating(ZiplineDownloadTask::class) {
applicationName = "my-application"
manifestUrl = "https://your-cdn.com/zipline/alpha-app/latest/manifest.zipline.json"
downloadDir = file("$buildDir/resources/zipline/alpha-app/latest")
}
This plugin has Gradle integration tests in ZiplinePluginTest
. The test projects can be loaded
into IntelliJ and executed standalone with Gradle with this setup:
-
Initialize the local test repo. This builds the Zipline plugin and libraries that the test projects run against.
./gradlew zipline-gradle-plugin:test
-
Paste this into the sample project's
gradle.properties
, substituting in the version frombuild.gradle.kts
:ziplineVersion=1.0.0-SNAPSHOT
-
Run Gradle.
$ cd zipline-gradle-plugin/src/test/projects/basic $ ../../../../../gradlew tasks