build.gradle
255 lines
| 5.0 KiB
| text/x-groovy
|
GroovyLexer
|
|
r87 | plugins { | |
|
|
r93 | id "org.implab.gradle-typescript" version "1.0.1-rc3" | |
|
|
r87 | } | |
|
|
r61 | // если версия явно не заданы вычисляем ее из тэга ревизии v.{num}*** | |
| // результатом будет версия '{num}.{distance}' где distance - расстояние от | |||
| // текущей ревизии до ревизии с тэгом | |||
|
|
r68 | def tagDistance = 0; | |
|
|
r93 | ext { | |
| packageName = "@$npmScope/$name" | |||
|
|
r94 | lint = project.hasProperty('lint') ? lint : false | |
|
|
r93 | } | |
|
|
r61 | if (!version) { | |
|
|
r68 | ||
|
|
r61 | def rev = ["hg", "log", "-r", ".", "--template", "{latesttag('re:^v') % '{tag}-{distance}'}"].execute().text.trim(); | |
| def tagVersion; | |||
|
|
r68 | def match = (rev =~ /^v(\d+\.\d+\.\d+).*-(\d+)$/); | |
|
|
r61 | ||
| if (match.size()) { | |||
| tagVersion = match[0][1]; | |||
| tagDistance = match[0][2].toInteger(); | |||
| } else { | |||
| throw new Exception("A version must be specied"); | |||
| } | |||
|
|
r68 | version = tagVersion; | |
| if (tagDistance > 0) | |||
| version++; | |||
|
|
r61 | } else { | |
| println "explicit version: $version"; | |||
| } | |||
| if (hasProperty('versionSuffix') && versionSuffix) { | |||
| version += "-$versionSuffix" | |||
|
|
r27 | } | |
|
|
r0 | ||
|
|
r87 | sources { | |
|
|
r89 | amd { | |
|
|
r90 | typings { | |
| srcDir main.output.typingsDir | |||
| } | |||
|
|
r89 | } | |
| cjs { | |||
|
|
r90 | typings { | |
| srcDir main.output.typingsDir | |||
| } | |||
| } | |||
| testAmd { | |||
| typings { | |||
| srcDir main.output.typingsDir | |||
| srcDir amd.output.typingsDir | |||
| srcDir test.output.typingsDir | |||
| } | |||
| } | |||
| testCjs { | |||
| typings { | |||
| srcDir main.output.typingsDir | |||
| srcDir cjs.output.typingsDir | |||
| srcDir test.output.typingsDir | |||
| } | |||
|
|
r89 | } | |
|
|
r59 | } | |
|
|
r87 | typescript { | |
| compilerOptions { | |||
| types = [] | |||
|
|
r89 | declaration = true | |
|
|
r59 | } | |
|
|
r91 | tscCmd = "$projectDir/node_modules/.bin/tsc" | |
| tsLintCmd = "$projectDir/node_modules/.bin/tslint" | |||
| esLintCmd = "$projectDir/node_modules/.bin/eslint" | |||
|
|
r87 | npmCmd = "npm" | |
|
|
r59 | } | |
|
|
r47 | ||
|
|
r94 | tasks.matching{ it.name =~ /^configureTs/ }.configureEach { | |
| dependsOn "prepare" | |||
| } | |||
| tasks.matching{ it.name =~ /^lint/ }.configureEach { | |||
| onlyIf { lint } | |||
| } | |||
|
|
r92 | task prepare { | |
| } | |||
|
|
r47 | task printVersion { | |
|
|
r92 | dependsOn prepare | |
|
|
r48 | doLast { | |
|
|
r92 | println "version: ${-> version}"; | |
| println "tagDistance: ${-> tagDistance}"; | |||
| println "packageName: ${-> packageName}"; | |||
| println "target: ${-> typescript.compilerOptions.target}"; | |||
| println "module: ${-> typescript.compilerOptions.module}"; | |||
|
|
r48 | } | |
|
|
r47 | } | |
|
|
r4 | task clean { | |
|
|
r94 | prepare.mustRunAfter it | |
|
|
r4 | doLast { | |
| delete buildDir | |||
|
|
r59 | } | |
| } | |||
|
|
r88 | npmPackMeta { | |
| meta { | |||
|
|
r89 | name = packageName | |
|
|
r60 | } | |
| } | |||
|
|
r90 | ||
|
|
r92 | configureTsCjs { | |
|
|
r90 | dependsOn sources.main.output | |
|
|
r93 | compilerOptions { | |
| types += [ "node" ] | |||
| } | |||
|
|
r90 | } | |
| configureTsAmd { | |||
|
|
r92 | dependsOn sources.main.output | |
|
|
r90 | compilerOptions { | |
| types += [ "requirejs", "dojo-typings" ] | |||
| } | |||
| } | |||
|
|
r91 | test { | |
| workingDir layout.buildDirectory.dir("test"); | |||
| commandLine "node", "tests/index.js" | |||
| } | |||
|
|
r93 | task assembleAmd { | |
| dependsOn sources.amd.output | |||
| assemble.mustRunAfter it | |||
| doLast { | |||
| assemble { | |||
| from(sources.amd.output.compiledDir) | |||
| } | |||
| } | |||
| } | |||
| task assembleCjs { | |||
| dependsOn sources.cjs.output | |||
| assemble.mustRunAfter it | |||
| doLast { | |||
| assemble { | |||
| from(sources.cjs.output.compiledDir) | |||
| } | |||
| } | |||
| } | |||
|
|
r92 | task assembleTestAmd { | |
|
|
r90 | dependsOn sources.amd.output | |
| dependsOn sources.testAmd.output | |||
|
|
r93 | assembleTest.mustRunAfter it | |
|
|
r92 | ||
| doLast { | |||
| assembleTest { | |||
| from(sources.amd.output.compiledDir) | |||
| from(sources.testAmd.output.compiledDir) | |||
| } | |||
| } | |||
| } | |||
|
|
r93 | task assembleTestCjs { | |
| dependsOn sources.cjs.output | |||
| dependsOn sources.testCjs.output | |||
| assembleTest.mustRunAfter it | |||
| doLast { | |||
| assembleTest { | |||
| from(sources.cjs.output.compiledDir) | |||
| from(sources.testCjs.output.compiledDir) | |||
| } | |||
| } | |||
|
|
r92 | } | |
|
|
r93 | task prepareTargetEs5 { | |
| prepare.mustRunAfter it | |||
|
|
r92 | ||
| doLast { | |||
| typescript { | |||
| compilerOptions { | |||
| target = "es5" | |||
| lib = ["es5", "dom", "scripthost", "es2015.promise", "es2015.symbol", "es2015.iterable"] | |||
| } | |||
| } | |||
| } | |||
| } | |||
| task prepareTargetEsNext { | |||
|
|
r93 | prepare.mustRunAfter it | |
|
|
r92 | doLast { | |
| typescript { | |||
| compilerOptions { | |||
|
|
r93 | target = "es2017" | |
| lib = ["es2017", "dom", "scripthost"] | |||
|
|
r92 | } | |
| } | |||
| } | |||
| } | |||
| task prepareNode { | |||
| dependsOn prepareTargetEsNext | |||
|
|
r93 | prepare.mustRunAfter it | |
|
|
r92 | doLast { | |
| typescript { | |||
| compilerOptions { | |||
| module = "commonjs" | |||
| } | |||
| } | |||
| } | |||
| } | |||
| task prepareBrowser { | |||
| dependsOn prepareTargetEs5 | |||
|
|
r93 | prepare.mustRunAfter it | |
|
|
r92 | doLast { | |
|
|
r93 | packageName = "@$npmScope/$project.name-amd" | |
|
|
r92 | typescript { | |
| compilerOptions { | |||
|
|
r93 | module = "amd" | |
|
|
r92 | } | |
| } | |||
| } | |||
| } | |||
|
|
r93 | task assembleBrowser { | |
| dependsOn prepareBrowser, assembleAmd, assemble | |||
| } | |||
| task assembleNode { | |||
| dependsOn prepareNode, assembleCjs, assemble | |||
| } | |||
| task testBrowser { | |||
| dependsOn prepareBrowser, assembleTestAmd, test | |||
| } | |||
| task testNode { | |||
| dependsOn prepareNode, assembleTestCjs, test | |||
|
|
r90 | } |
