build.gradle
197 lines
| 4.5 KiB
| text/x-groovy
|
GroovyLexer
|
|
r27 | if (release != 'rtm') { | |
| version += "-$release" | |||
| } | |||
|
|
r0 | ||
|
|
r47 | if(!npmName) | |
| npmName = name; | |||
|
|
r59 | if(!["amd", "commonjs", "system", "umd", "es6", "esnext"].contains(jsmodule)) | |
| throw new Exception("Invalid jsmodule specified: $jsmodule"); | |||
| if(!["es3", "es5", "es6", "es2016", "es2017", "esnext"].contains(target)) | |||
| throw new Exception("Invalid target specified: $target") | |||
|
|
r51 | ||
|
|
r59 | def targetLibs = [ | |
| "es3" : "es5,es2015.promise,es2015.symbol,dom,scripthost", | |||
| "es5" : "es5,es2015.promise,es2015.symbol,dom,scripthost" | |||
| ]; | |||
|
|
r0 | ||
|
|
r59 | ext.packageName="$npmScope/$npmName"; | |
|
|
r51 | ||
| def srcDir = "$projectDir/src" | |||
| def typingsDir = "$srcDir/typings" | |||
|
|
r59 | def distDir = "$buildDir/dist" | |
| def testDir = "$buildDir/test" | |||
| def lib = targetLibs[target] ?: "${target},dom"; | |||
| println "lib: $lib"; | |||
| def sourceSets = ["main", "amd", "cjs"]; | |||
| def testSets = ["test", "testAmd", "testCjs"]; | |||
| task beforeBuild { | |||
| } | |||
| def createSoursetTasks = { String name, String outDir -> | |||
| def setName = name.capitalize(); | |||
| def destDir = "$buildDir/compile/$name" | |||
| def declDir = "$typingsDir/$name" | |||
| def setDir = "$projectDir/src/$name" | |||
| def beforeBuildTask = task "beforeBuild$setName"(dependsOn: beforeBuild) { | |||
| } | |||
| def copyJsTask = task "copyJs$setName"(dependsOn: beforeBuildTask, type: Copy) { | |||
| from "$setDir/js" | |||
| into outDir | |||
| } | |||
| def compileTypingsTask = task "compileTypings$setName"(dependsOn: beforeBuildTask, type: Exec) { | |||
| inputs.dir("$setDir/ts") | |||
| inputs.file("$srcDir/tsconfig.json") | |||
| inputs.file("$setDir/tsconfig.json") | |||
| outputs.dir(declDir) | |||
|
|
r51 | ||
|
|
r59 | commandLine 'node_modules/.bin/tsc', | |
| '-p', "$setDir/tsconfig.json", | |||
| '-t', target, | |||
| '-m', jsmodule, | |||
| '-d', | |||
| '--emitDeclarationOnly', | |||
| '--declarationDir', declDir | |||
| if (lib) | |||
| args '--lib', lib | |||
| } | |||
| def compileTsTask = task "compileTs$setName"(dependsOn: beforeBuildTask, type: Exec) { | |||
| inputs.dir("$setDir/ts") | |||
| inputs.file("$srcDir/tsconfig.json") | |||
| inputs.file("$setDir/tsconfig.json") | |||
| outputs.dir(destDir) | |||
| commandLine 'node_modules/.bin/tsc', | |||
| '-p', "$setDir/tsconfig.json", | |||
| '-t', target, | |||
| '-m', jsmodule, | |||
| '--outDir', destDir | |||
| if (lib) | |||
| args '--lib', lib | |||
| } | |||
| def copyTsOutputTask = task "copyTsOutput$setName"(dependsOn: compileTsTask, type: Copy) { | |||
| from compileTsTask | |||
| into outDir | |||
| } | |||
| def copyTypingsTask = task "copyTypings$setName"(dependsOn: compileTypingsTask, type: Copy) { | |||
| from compileTypingsTask | |||
| into outDir | |||
| } | |||
| task "build$setName"(dependsOn: [copyTypingsTask, copyTsOutputTask, copyJsTask]) { | |||
| } | |||
| } | |||
|
|
r47 | ||
| task printVersion { | |||
|
|
r48 | doLast { | |
| println "version: $version" | |||
| println "packageName: $packageName" | |||
|
|
r59 | println "target: $target" | |
| println "module: $jsmodule" | |||
|
|
r48 | } | |
|
|
r47 | } | |
|
|
r4 | task clean { | |
| doLast { | |||
| delete buildDir | |||
|
|
r51 | delete typingsDir | |
|
|
r4 | } | |
|
|
r2 | } | |
|
|
r59 | task _initBuild { | |
| mustRunAfter clean | |||
| def buildInfoFile = "$buildDir/platform"; | |||
| inputs.property('target',target); | |||
| inputs.property('jsmodule',jsmodule); | |||
| outputs.file(buildInfoFile); | |||
| doLast { | |||
| delete buildDir | |||
| mkdir buildDir | |||
| def f = new File(buildInfoFile); | |||
| f << "$target-$jsmodule"; | |||
| } | |||
| } | |||
|
|
r4 | task cleanNpm { | |
| doLast { | |||
| delete 'node_modules' | |||
|
|
r2 | } | |
| } | |||
|
|
r0 | ||
|
|
r4 | task _npmInstall() { | |
| inputs.file("package.json") | |||
| outputs.dir("node_modules") | |||
| doLast { | |||
| exec { | |||
| commandLine 'npm', 'install' | |||
|
|
r1 | } | |
| } | |||
|
|
r0 | } | |
|
|
r59 | beforeBuild { | |
| dependsOn _initBuild | |||
| dependsOn _npmInstall | |||
| } | |||
|
|
r51 | ||
|
|
r59 | sourceSets.each { createSoursetTasks(it, distDir) } | |
|
|
r51 | ||
|
|
r59 | testSets.each { createSoursetTasks(it, testDir) } | |
|
|
r51 | ||
|
|
r59 | compileTsAmd { | |
| dependsOn compileTypingsMain | |||
|
|
r4 | } | |
|
|
r59 | compileTypingsAmd { | |
| dependsOn compileTypingsMain | |||
| } | |||
| task build(dependsOn: buildMain) { | |||
| if (jsmodule == "amd") | |||
| dependsOn buildAmd | |||
|
|
r51 | } | |
|
|
r8 | ||
|
|
r59 | compileTsTest { | |
| dependsOn build | |||
|
|
r51 | } | |
|
|
r59 | compileTsTestAmd { | |
| dependsOn compileTypingsTestAmd | |||
| } | |||
| task test(dependsOn: [buildTest, buildTestAmd], type: Exec) { | |||
| commandLine 'node', "$testDir/run-amd-tests.js" | |||
|
|
r8 | } | |
|
|
r4 | task _packageMeta(type: Copy) { | |
|
|
r59 | mustRunAfter build | |
|
|
r4 | inputs.property("version", version) | |
| from('.') { | |||
|
|
r51 | include '.npmignore', 'readme.md', 'license', 'history.md' | |
| } | |||
|
|
r59 | from("$srcDir/package.${jsmodule}.tmpl.json") { | |
|
|
r51 | expand project.properties | |
| rename { "package.json" } | |||
|
|
r4 | } | |
| into distDir | |||
| } | |||
|
|
r59 | task pack(dependsOn: [build, _packageMeta], type: Exec) { | |
|
|
r51 | workingDir distDir | |
|
|
r0 | ||
| commandLine 'npm', 'pack' | |||
| } |
