build.gradle
133 lines
| 2.7 KiB
| text/x-groovy
|
GroovyLexer
|
|
r27 | if (release != 'rtm') { | |
| version += "-$release" | |||
| } | |||
|
|
r0 | ||
|
|
r47 | if(!npmName) | |
| npmName = name; | |||
|
|
r51 | if(!["amd", "cjs"].contains(platform)) | |
| throw new Exception("Invalid platform specified: $platform"); | |||
| def moduleTypes = [ | |||
| "amd": "amd", | |||
| "cjs": "commonjs" | |||
| ] | |||
|
|
r0 | ||
|
|
r51 | ext.packageName="$npmScope/$npmName-$platform"; | |
| def srcDir = "$projectDir/src" | |||
| def typingsDir = "$srcDir/typings" | |||
| def distDir = "$buildDir/dist/$platform" | |||
| def testDir = "$buildDir/test/$platform" | |||
| def moduleType = moduleTypes[platform] | |||
| def sourceSets = ["main", "amd", "cjs", "test"]; | |||
|
|
r47 | ||
| task printVersion { | |||
|
|
r48 | doLast { | |
| println "version: $version" | |||
| println "packageName: $packageName" | |||
| println "platform: $platform" | |||
|
|
r51 | println "module: $moduleType" | |
|
|
r48 | } | |
|
|
r47 | } | |
|
|
r4 | task clean { | |
| doLast { | |||
| delete buildDir | |||
|
|
r47 | delete "node_modules/$packageName" | |
|
|
r51 | delete typingsDir | |
|
|
r4 | } | |
|
|
r2 | } | |
|
|
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 | } | |
|
|
r51 | sourceSets.each { | |
| def setName = it.capitalize(); | |||
| def destDir = "$buildDir/compile/$it" | |||
| def declDir = "$typingsDir/$it" | |||
| def setDir = "$projectDir/src/$it" | |||
| task "_copyJs$setName"(type:Copy) { | |||
| from "$setDir/js" | |||
| into distDir | |||
| } | |||
| task "_compileTs$setName"(dependsOn: _npmInstall, type:Exec) { | |||
| inputs.dir("$setDir/ts") | |||
| inputs.file("$srcDir/tsconfig.json") | |||
| inputs.file("$setDir/tsconfig.json") | |||
| outputs.dir(destDir) | |||
| outputs.dir(declDir) | |||
| commandLine 'node_modules/.bin/tsc', | |||
| '-p', "$setDir/tsconfig.json", | |||
| '-m', moduleType, | |||
| '--outDir', destDir, | |||
| '--declarationDir', declDir | |||
| } | |||
| task "_buildTs$setName"(dependsOn: "_compileTs$setName", type:Copy) { | |||
| from tasks.getByPath("_compileTs$setName"); | |||
| into distDir | |||
| } | |||
|
|
r4 | } | |
|
|
r51 | _compileTsAmd { | |
| dependsOn _buildTsMain | |||
| } | |||
|
|
r8 | ||
|
|
r51 | _buildTsTest { | |
| into testDir | |||
| } | |||
| _copyJsTest { | |||
| into testDir | |||
|
|
r8 | } | |
|
|
r4 | task _packageMeta(type: Copy) { | |
| inputs.property("version", version) | |||
| from('.') { | |||
|
|
r51 | include '.npmignore', 'readme.md', 'license', 'history.md' | |
| } | |||
| from("$srcDir/package.template.json") { | |||
| expand project.properties | |||
| rename { "package.json" } | |||
|
|
r4 | } | |
| into distDir | |||
| } | |||
|
|
r51 | task build(dependsOn: [_copyJsMain, _copyJsAmd, _npmInstall, _buildTsMain, _buildTsAmd, _packageMeta]) { | |
|
|
r4 | ||
| } | |||
|
|
r51 | _compileTsTest { | |
| dependsOn build | |||
|
|
r0 | } | |
|
|
r51 | task buildTests(dependsOn: [_copyJsTest, _buildTsTest]) { | |
|
|
r7 | } | |
|
|
r51 | task test(dependsOn: buildTests, type: Exec) { | |
| commandLine 'node', "$testDir/run-amd-tests.js" | |||
|
|
r7 | } | |
|
|
r0 | task pack(dependsOn: build, type: Exec) { | |
|
|
r51 | workingDir distDir | |
|
|
r0 | ||
| commandLine 'npm', 'pack' | |||
| } |
