This plugin is no longer maintained! Please consider the Gradle Node Plugin.
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:
plugins { id "com.eriwen.gradle.js" version "2.14.1" }buildscript { repositories { jcenter() } dependencies { classpath "com.eriwen:gradle-js-plugin:1.12.1" } } apply plugin: "com.eriwen.gradle.js"// Declare your sources javascript.source { dev { js { srcDir jsSrcDir include "*.js" exclude "*.min.js" } } prod { js { srcDir jsSrcDir include "*.min.js" } } }Combining Files (options)
// Configure the built-in task combineJs { encoding = "UTF-8" source = javascript.source.dev.js.files dest = file("${buildDir}/all.js") } // Create new CombineJsTasks if you have multiple sets of JS files task jsDev(type: com.eriwen.gradle.js.tasks.CombineJsTask) { source = ["${projectDir}/js/file1.js", "${projectDir}/js/file2.js"] dest = file("${buildDir}/all-debug.js") } task jsProd(type: com.eriwen.gradle.js.tasks.CombineJsTask) { source = ["${projectDir}/js/file1.js", "${projectDir}/js/file2.js"] dest = file("${buildDir}/all.js") }Minifying files with Google Closure Compiler (options)
minifyJs { source = combineJs dest = file("${buildDir}/all-min.js") sourceMap = file("${buildDir}/all.sourcemap.json") closure { warningLevel = 'QUIET' } }GZip JS (options)
gzipJs { source = minifyjs dest = file("${buildDir}/all-min.js") }jshint { source = javascript.source.dev.js.files dest = file("${buildDir}/jshint.out") reporter = 'checkstyle' jshint.options = [expr: "true", unused: "true"] }jsdoc { source = ["${projectDir}/js/file1.js", "${projectDir}/js/file2.js"] destinationDir = file("${buildDir}/jsdoc") }props2js { source = file("${projectDir}/src/test/resources/test.properties") dest = file("${buildDir}/props.jsonp") props { type = 'jsonp' functionName = 'fn' } }require.js via r.js (options)
requireJs { source = javascript.source.dev.js.files dest = file("${buildDir}/out.js") requirejs.buildprofile = new File("src/main/resources/requirejs-config.js") }- source = Collection of file paths 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) sourcemap = Source map file
- (Optional) closure.compilationLevel = 'WHITESPACE_ONLY', 'SIMPLE_OPTIMIZATIONS' (default), or 'ADVANCED_OPTIMIZATIONS' (are you hardcore?)
- (Optional) closure.warningLevel = 'QUIET', 'DEFAULT' (default), or 'VERBOSE'
- (Optional) closure.compilerOptions = CompilerOptions object
- (Optional) closure.externs = FileCollection object
- source = File to compress
- dest = File for compressed output
- source = Files to assess with JSHint
- dest = File for JSHint output
- (Optional) reporter = Only 'checkstyle' supported right now. Defaults to plain JSHint output.
- (Optional) ignoreExitCode = Fail build if
falseand jshint finds problems. Default istrue. - (Optional) outputToStdOut =
truewill output to STDOUT instead of file. Default isfalse. - (Optional) jshint.options = Map of options (e.g.
[expr: "true", unused: "true"]) - (Optional) jshint.predef = Map of predefined globals so JSHint doesn't complain about them
- source = Files to generate documentation for
- destinationDir = Directory path to put JSDoc output
- (Optional) options.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. - source = Properties file to process
- dest = Destination file for output
- props.type = One of: 'js', 'json', or 'jsonp'
- (Optional) props.functionName = Function name to wrap JSONP
- source = Source JS files
- dest = Output JS file
- (Must declare this or
requirejs.options) requirejs.buildprofile = File reference for config example - requirejs.options = Map of options require.js docs
- (Optional) ignoreExitCode = Fail build if
falseand require.js did not run successfully. Default isfalse. - (Optional) requirejs.impl = r.js implementation file. Version 2.1.8 is provided within this plugin. Specifying this option allows users to specify a version of the require optimizer of their own choosing
What, you want more? Tell me!
This project is made possible due to the efforts of these fine people:
- Eric Wendelin - Original author and maintainer
- Luke Daley - Advice and improved project structure and testing
- Josh Newman - AMD and CommonJS work
- Martin Ziel - Allowing minifyJs task to accept multiple files as input
- Joe Fitzgerald - JSHint and RequireJS features
- levsa - JSHint predef and checkstyle reporter
- Martin Snyder - requireJs impl option
- Aaron Arnett - Remove explicit MavenCentral dependency
- sv99 - Improve Gradle version compatibility
The Gradle CSS Plugin!