plugins { id "org.implab.gradle-typescript" version "1.0.1-rc2" } // если версия явно не заданы вычисляем ее из тэга ревизии v.{num}*** // результатом будет версия '{num}.{distance}' где distance - расстояние от // текущей ревизии до ревизии с тэгом def tagDistance = 0; if (!version) { def rev = ["hg", "log", "-r", ".", "--template", "{latesttag('re:^v') % '{tag}-{distance}'}"].execute().text.trim(); def tagVersion; def match = (rev =~ /^v(\d+\.\d+\.\d+).*-(\d+)$/); if (match.size()) { tagVersion = match[0][1]; tagDistance = match[0][2].toInteger(); } else { throw new Exception("A version must be specied"); } version = tagVersion; if (tagDistance > 0) version++; } else { println "explicit version: $version"; } if (hasProperty('versionSuffix') && versionSuffix) { version += "-$versionSuffix" } ext { packageName = "@$npmScope/$npmName" } sources { amd { typings { srcDir main.output.typingsDir } } cjs { 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 } } } typescript { compilerOptions { types = [] declaration = true listFiles = true } tscCmd = "$projectDir/node_modules/.bin/tsc" tsLintCmd = "$projectDir/node_modules/.bin/tslint" esLintCmd = "$projectDir/node_modules/.bin/eslint" npmCmd = "npm" } task prepare { } task printVersion { dependsOn prepare doLast { println "version: ${-> version}"; println "tagDistance: ${-> tagDistance}"; println "packageName: ${-> packageName}"; println "target: ${-> typescript.compilerOptions.target}"; println "module: ${-> typescript.compilerOptions.module}"; } } task clean { doLast { delete buildDir } } npmPackMeta { meta { name = packageName } } configureTsCjs { dependsOn sources.main.output } configureTsAmd { dependsOn sources.main.output compilerOptions { types += [ "requirejs", "dojo-typings" ] } } test { workingDir layout.buildDirectory.dir("test"); commandLine "node", "tests/index.js" } task assembleTestAmd { dependsOn sources.amd.output dependsOn sources.testAmd.output doLast { assembleTest { from(sources.amd.output.compiledDir) from(sources.testAmd.output.compiledDir) } } } assembleTest { mustRunAfter assembleTestAmd dependsOn sources.main.output from(sources.main.output.compiledDir) } task prepareTargetEs5 { doLast { typescript { compilerOptions { target = "es5" lib = ["es5", "dom", "scripthost", "es2015.promise", "es2015.symbol", "es2015.iterable"] } } } } task prepareTargetEsNext { doLast { typescript { compilerOptions { target = "esnext" lib = ["esnext", "dom", "scripthost"] } } } } task prepareNode { dependsOn prepareTargetEsNext doLast { typescript { compilerOptions { target = "esnext" module = "commonjs" } } } } task prepareBrowser { dependsOn prepareTargetEs5 doLast { typescript { compilerOptions { module = "requirejs" } } } } prepare { mustRunAfter prepareNode, prepareBrowser }