Skip to content

darrellpratt/gradle-js-plugin

 
 

Repository files navigation

Gradle Javascript Plugin!

Aiming to be the simplest way to manage your Javascript in a build.

Quick Start

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'
}

Available Tasks and Options

combineJs

  • 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

gzipJs

  • source = File to compress
  • dest = File for compressed output

js (DEPRECATED, will be removed in v0.5)

  • 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

jshint

  • source = Files to assess with JSHint

jsdoc

  • 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.

props2js

  • 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!

See Also

The Gradle CSS Plugin!

About

Gradle plugin for working with JS

Resources

License

Stars

Watchers

Forks

Packages

No packages published