• This repository has been archived on 17/Jul/2022
  • Stars
    star
    381
  • Rank 111,863 (Top 3 %)
  • Language
    JavaScript
  • License
    Apache License 2.0
  • Created almost 13 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Gradle plugin for working with JS

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!

More Repositories

1

lcov-to-cobertura-xml

Converts lcov output to Cobertura-compatible XML for CI
Python
185
star
2

gradle-css-plugin

Gradle plugin for working with CSS
JavaScript
127
star
3

smap.js

A forward polyfill for ES6 Maps/Awesome Map util methods
JavaScript
50
star
4

dotfiles

System config
Shell
30
star
5

es6-map-shim

Implements the evolving ES6 Map specification as closely as possible
JavaScript
23
star
6

cheqlist

Desktop application for Remember The Milk (SHUT DOWN)
Java
20
star
7

gradle-cobertura-plugin

Gradle plugin for Cobertura
Groovy
19
star
8

kanban

Simple kanban board backed by MongoDB, jade, stylus and mocha
JavaScript
17
star
9

groovyrtm

Groovy API for Remember The Milk (DEPRECATED)
Groovy
13
star
10

brunch-jade-bootstrap-and-coffee

Brunch skeleton including Bootstrap, SASS, Jade and CoffeeScript
CoffeeScript
13
star
11

eriwen.com

Eric Wendelin's blog at eriwen.com
CSS
7
star
12

gradle-digest-plugin

Digest sources to allow identification of files by their content
Kotlin
7
star
13

hadoop-examples

Hadoop code examples for training purposes
Java
5
star
14

thumbs

Simple team-based rating application written in node.js
JavaScript
4
star
15

flot-plugins

Plugins for Flot, a Javascript charting library
JavaScript
4
star
16

brunch-notes-example

Simple notes app demonstrating features of Brunch
CoffeeScript
4
star
17

griffon-jython

Jython plugin for Griffon
Groovy
3
star
18

eriwen.com-v3

Relevant sourcecode for the old WordPress version of eriwen.com
JavaScript
3
star
19

kanban-coffee

Kanban board written in NodeJS, CoffeeScript, Jade, Stylus, and Mocha
CoffeeScript
3
star
20

dashpebble

Pebble watch face modeled after DashClock for Android
C
2
star
21

coffee-script-source-maps-ftw

Coffee Script Source Maps FTW!
Ruby
2
star
22

github-launch-bookmark

Access GitHub from a single search box supercharged with command line power.
1
star
23

gradle-summit-2017-demo

CSS
1
star
24

gradle-node-playground

Playing around with node stuff and Gradle
JavaScript
1
star
25

ml-flower-recognition

Identify flower species from photos using a neural network
HTML
1
star
26

udacity-mldevops-exercise3

Jupyter Notebook
1
star
27

eriwen

About Eric Wendelin
1
star