ExtJS is pretty nice, overall, and it comes with a powerful build tool – Sencha Cmd.
Running builds with it can be tedious, because it doesn’t have any up-to-date checks – it constantly rebuilds stuff it doesn’t need. Oh, the time wasting!
As it turns out, Sencha Cmd is an Ant-based build tool. Which means we can create Gradle builds that augment it – given us support for such things as up-to-date checks.
Like this:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ant.importBuild 'build.xml' | |
def packages_dir = file('../packages') | |
clean { | |
doLast { delete 'bootstrap.js', 'bootstrap.css', 'bootstrap.json' } | |
} | |
refresh { | |
inputs.dir 'app' | |
inputs.file 'app.json' | |
packages_dir.listFiles().each() { package_dir -> inputs.dir new File(package_dir, 'src') } | |
outputs.file file('bootstrap.js') | |
outputs.file file('bootstrap.json') | |
} | |
js { | |
inputs.dir 'app' | |
packages_dir.listFiles().each() { package_dir -> inputs.dir new File(package_dir, 'src') } | |
outputs.file file("../build/${this.property('build.environment')}/${projectName}/app.js") | |
} | |
resources { | |
inputs.dir 'resources' | |
packages_dir.listFiles().each() { package_dir -> inputs.dir new File(package_dir, 'resources') } | |
outputs.file file("../build/${this.property('build.environment')}/${projectName}/resources") | |
} | |
sass { | |
inputs.dir 'sass' | |
packages_dir.listFiles().each() { package_dir -> inputs.dir new File(package_dir, 'sass') } | |
outputs.file file("../build/${this.property('build.environment')}/${projectName}/resources/${projectName}-all.css") | |
outputs.file file('bootstrap.css') | |
} | |
page { | |
// what are the inputs to page, I wonder? | |
// the outputs are the microloader.js and the index.html... | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# the default Build Environment. Production is the default for Sencha Cmd. | |
# Use -Dbuild.environment on the command line to change, otherwise it doesn't get passed to the ant build properly | |
build.environment=production | |
# The project name. Should match what is in the app.json file | |
projectName=MyApp |
Share and Enjoy!