If you use Gradle builds to combine and minify JavaScript source files via the gradle-js-plugin (thanks, Eric!), you might have run into the same problem as I did: ordering of the files!
The Github docco doesn’t mention (yet!) anything around it and you are left to guess that doing something like this will sort out your ordering:
combineJs { encoding = "UTF-8" source = ["fileB.js", "fileA.js"] dest = file("${buildDir}/all.js") } |
And you will get in the combined (output) javascript fileB.js
source before fileA.js
.
Well, you’re wrong! You go down that route it seems the source files will always be alphabetically sorted.
The workaround this issue that I found consists of 2 changes in one go:
- Define your own custom task
- AND also specify a files collection
Like this:
task combineJsSource(type: com.eriwen.gradle.js.tasks.CombineJsTask) { source = files("fileB.js", "fileA.js") dest = file("${buildDir}/all.js") } |
This works beautifully and you can still use its output in a minifyJs
task:
minifyJs { source = combineJsSource //... } |
You can see in fact the full discussion on Github which concluded with this solution here: https://github.com/eriwen/gradle-js-plugin/issues/4
You’re welcome! 🙂