Skip to content
This repository was archived by the owner on Jul 17, 2022. It is now read-only.

eriwen/gradle-js-plugin

Repository files navigation

This plugin is no longer maintained! Please consider the Gradle Node Plugin.

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:

Gradle 2.1+

plugins { id "com.eriwen.gradle.js" version "2.14.1" }

Gradle 2.0-

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 support (options)

jshint { source = javascript.source.dev.js.files dest = file("${buildDir}/jshint.out") reporter = 'checkstyle' jshint.options = [expr: "true", unused: "true"] }

JSDoc 3 support (options)

jsdoc { source = ["${projectDir}/js/file1.js", "${projectDir}/js/file2.js"] destinationDir = file("${buildDir}/jsdoc") }

props2js support (options)

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") }

Built-in Tasks and Options

combineJs

  • 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

gzipJs

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

jshint

  • 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 false and jshint finds problems. Default is true.
  • (Optional) outputToStdOut = true will output to STDOUT instead of file. Default is false.
  • (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

jsdoc

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

props2js

  • 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

requireJs

  • 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 false and require.js did not run successfully. Default is false.
  • (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!

Contributors

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

See Also

The Gradle CSS Plugin!

About

Gradle plugin for working with JS

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors