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:
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... | |
} |
# 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!