Aiming to be the simplest way to manage your Javascript in a build.
Wrangling your JS in a Gradle build is easy! Just add this to your build.gradle file:
// Pull the plugin from a Maven Repo
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.eriwen:gradle-js-plugin:0.4'
}
}
// Invoke the plugin
apply plugin: 'js'
// Specify a collection of files to be combined, then minified and finally GZip compressed.
task combinejs(type: com.eriwen.gradle.js.tasks.CombineJsTask) {
source = ["${projectDir}/js/file1.js", "${projectDir}/js/file2.js"]
dest = file("${buildDir}/all.js")
}
task minifyjs(type: com.eriwen.gradle.js.tasks.MinifyJsTask, dependsOn: 'combinejs') {
source = file("${buildDir}/all.js")
dest = file("${buildDir}/all-min.js")
warningLevel = 'QUIET'
}
task gzipjs(type: com.eriwen.gradle.js.tasks.GzipJsTask, dependsOn: 'minifyjs') {
source = file("${buildDir}/all-min.js")
dest = file("${buildDir}/all-min.js")
}
Need more than 1 set of files generated? We'll have to declare our tasks a bit differently:
task jsDev(type: com.eriwen.gradle.js.tasks.JsTask) {
source = ["${projectDir}/js/file1.js", "${projectDir}/js/file2.js"]
dest = file("${buildDir}/all-debug.js")
compilationLevel = 'WHITESPACE_ONLY'
}
task jsProd(type: com.eriwen.gradle.js.tasks.JsTask) {
source = ["${projectDir}/js/file1.js", "${projectDir}/js/file2.js"]
dest = file("${buildDir}/all.js")
}
JSHint support
task jshintjs(type: com.eriwen.gradle.js.tasks.JsHintTask) {
source = ['js/main.js']
}
JSDoc 3 support
task jsdocjs(type: com.eriwen.gradle.js.tasks.JsDocTask) {
source = ["${projectDir}/js/file1.js", "${projectDir}/js/file2.js"]
destinationDir = file("${buildDir}/jsdoc")
options = []
}
props2Js support
task props(type: com.eriwen.gradle.js.tasks.Props2JsTask) {
propertiesFile = file("${projectDir}/src/test/resources/test.properties")
dest = file("${buildDir}/props.jsonp")
type = 'jsonp'
functionName = 'fn'
}
- source = FileCollection of files to merge
- dest = File for combined output
minifyJs (Uses the Google Closure Compiler)
- source = File to minify
- dest = File for minified output
- (Optional) compilationLevel = 'WHITESPACE_ONLY', 'SIMPLE_OPTIMIZATIONS' (default), or 'ADVANCED_OPTIMIZATIONS' (are you hardcore?)
- (Optional) warningLevel = 'QUIET', 'DEFAULT' (default), or 'VERBOSE'
- (Optional) compilerOptions = CompilerOptions object
- source = File to compress
- dest = File for compressed output
- inputs.files Files to combine, minify and gzip
- optputs.files File for tiny output :)
- (Optional) compilationLevel = 'WHITESPACE_ONLY', 'SIMPLE_OPTIMIZATIONS' (default), or 'ADVANCED_OPTIMIZATIONS' (are you hardcore?)
- (Optional) warningLevel = 'QUIET', 'DEFAULT' (default), or 'VERBOSE'
- (Optional) compilerOptions = CompilerOptions object
- source = Files to assess with JSHint
- source = Files to generate documentation for
- destinationDir = Directory path to put JSDoc output
- (Optional) options = []
JSDoc 3 options:
-t or --template <value> The name of the template to use. Default: the "default" template
-c or --configure <value> The path to the configuration file. Default: jsdoc __dirname + /conf.json
-e or --encoding <value> Assume this encoding when reading all source files. Default: utf-8
-T or --test Run all tests and quit.
-d or --destination <value> The path to the output folder. Use "console" to dump data to the console. Default: console
-p or --private Display symbols marked with the @private tag. Default: false.
-r or --recurse Recurse into subdirectories when scanning for source code files.
-h or --help Print this message and quit.
-X or --explain Dump all found doclet internals to console and quit.
-q or --query <value> Provide a querystring to define custom variable names/values to add to the options hash.
-u or --tutorials <value> Directory in which JSDoc should search for tutorials.
- propertiesFile = Properties file to process
- dest = Destination file for output
- type = One of: 'js', 'json', or 'jsonp'
- (Optional) functionName = Function name to wrap JSONP
What, you want more? Tell me then!
The Gradle CSS Plugin!