##// END OF EJS Templates
working build and test for browser and node targets
working build and test for browser and node targets

File last commit:

r93:e1c9ce0d77b4 ts-plugin
r93:e1c9ce0d77b4 ts-plugin
Show More
build.gradle
245 lines | 4.8 KiB | text/x-groovy | GroovyLexer
plugins {
id "org.implab.gradle-typescript" version "1.0.1-rc3"
}
// если версия явно не заданы вычисляем ее из тэга ревизии v.{num}***
// результатом будет версия '{num}.{distance}' где distance - расстояние от
// текущей ревизии до ревизии с тэгом
def tagDistance = 0;
ext {
packageName = "@$npmScope/$name"
}
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"
}
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
compilerOptions {
types += [ "node" ]
}
}
configureTsAmd {
dependsOn sources.main.output
compilerOptions {
types += [ "requirejs", "dojo-typings" ]
}
}
test {
workingDir layout.buildDirectory.dir("test");
commandLine "node", "tests/index.js"
}
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)
}
}
}
task assembleTestAmd {
dependsOn sources.amd.output
dependsOn sources.testAmd.output
assembleTest.mustRunAfter it
doLast {
assembleTest {
from(sources.amd.output.compiledDir)
from(sources.testAmd.output.compiledDir)
}
}
}
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)
}
}
}
task prepareTargetEs5 {
prepare.mustRunAfter it
doLast {
typescript {
compilerOptions {
target = "es5"
lib = ["es5", "dom", "scripthost", "es2015.promise", "es2015.symbol", "es2015.iterable"]
}
}
}
}
task prepareTargetEsNext {
prepare.mustRunAfter it
doLast {
typescript {
compilerOptions {
target = "es2017"
lib = ["es2017", "dom", "scripthost"]
}
}
}
}
task prepareNode {
dependsOn prepareTargetEsNext
prepare.mustRunAfter it
doLast {
typescript {
compilerOptions {
module = "commonjs"
}
}
}
}
task prepareBrowser {
dependsOn prepareTargetEs5
prepare.mustRunAfter it
doLast {
packageName = "@$npmScope/$project.name-amd"
typescript {
compilerOptions {
module = "amd"
}
}
}
}
task assembleBrowser {
dependsOn prepareBrowser, assembleAmd, assemble
}
task assembleNode {
dependsOn prepareNode, assembleCjs, assemble
}
task testBrowser {
dependsOn prepareBrowser, assembleTestAmd, test
}
task testNode {
dependsOn prepareNode, assembleTestCjs, test
}