build.gradle
110 lines
| 2.4 KiB
| text/x-groovy
|
GroovyLexer
|
|
r87 | plugins { | ||
|
|
r88 | id "org.implab.gradle-typescript" version "1.0.1-rc1" | ||
|
|
r87 | } | ||
|
|
r61 | // если версия явно не заданы вычисляем ее из тэга ревизии v.{num}*** | ||
| // результатом будет версия '{num}.{distance}' где distance - расстояние от | ||||
| // текущей ревизии до ревизии с тэгом | ||||
|
|
r68 | def tagDistance = 0; | ||
|
|
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 | |||
|
|
r89 | if(! jsmodule in ["amd", "commonjs", "system", "umd", "es6", "esnext"]) | ||
|
|
r59 | throw new Exception("Invalid jsmodule specified: $jsmodule"); | ||
|
|
r89 | if(! target in ["es3", "es5", "es6", "es2016", "es2017", "esnext"]) | ||
|
|
r59 | throw new Exception("Invalid target specified: $target") | ||
|
|
r51 | |||
|
|
r87 | ext { | ||
| packageName = "@$npmScope/$npmName" | ||||
| } | ||||
|
|
r51 | |||
|
|
r87 | def jstarget = target; | ||
|
|
r59 | |||
|
|
r87 | sources { | ||
|
|
r89 | amd { | ||
|
|
r59 | |||
|
|
r89 | } | ||
| cjs { | ||||
| } | ||||
|
|
r59 | } | ||
|
|
r87 | typescript { | ||
| compilerOptions { | ||||
|
|
r89 | lib = [target, "dom", "scripthost"] | ||
| if (jstarget in ["es5", "es3"]) | ||||
| lib += ["es2015.promise"] | ||||
|
|
r87 | target = jstarget | ||
| module = jsmodule | ||||
| types = [] | ||||
|
|
r89 | declaration = true | ||
| listFiles = true | ||||
|
|
r59 | } | ||
|
|
r87 | tsLintCmd = "tslint" | ||
| esLintCmd = "eslint" | ||||
| npmCmd = "npm" | ||||
|
|
r59 | } | ||
|
|
r47 | |||
|
|
r89 | configureTsMain { | ||
| compilerOptions { | ||||
| if (jstarget in ["es5", "es3"]) | ||||
| lib += ["es2015.symbol", "es2015.iterable"] | ||||
| } | ||||
| } | ||||
| configureTsTest { | ||||
| compilerOptions { | ||||
| types += [ "node" ] | ||||
| } | ||||
| } | ||||
|
|
r47 | task printVersion { | ||
|
|
r48 | doLast { | ||
|
|
r68 | println "version: $version"; | ||
|
|
r89 | println "tagDistance: $tagDistance"; | ||
|
|
r68 | println "packageName: $packageName"; | ||
|
|
r88 | println "bundle: ${npmPack.outputs.files.join(',')}"; | ||
| println "target: $jstarget"; | ||||
|
|
r68 | println "module: $jsmodule"; | ||
|
|
r48 | } | ||
|
|
r47 | } | ||
|
|
r4 | task clean { | ||
| doLast { | ||||
| delete buildDir | ||||
|
|
r59 | } | ||
| } | ||||
|
|
r88 | npmPackMeta { | ||
| meta { | ||||
|
|
r89 | name = packageName | ||
|
|
r60 | } | ||
| } | ||||
