##// END OF EJS Templates
Working on build, vs code tasks
Working on build, vs code tasks

File last commit:

r98:2e1aa35d6371 ts-plugin
r98:2e1aa35d6371 ts-plugin
Show More
build.gradle
259 lines | 5.2 KiB | text/x-groovy | GroovyLexer
plugins {
id "org.implab.gradle-typescript" version "1.0.1-rc3"
id "org.implab.gradle-hg"
id "ivy-publish"
}
// если версия явно не заданы вычисляем ее из тэга ревизии v.{num}***
// результатом будет версия '{num}.{distance}' где distance - расстояние от
// текущей ревизии до ревизии с тэгом
def tagDistance = 0;
ext {
packageName = "@$npmScope/$name"
lint = project.hasProperty('lint') ? lint : false
}
configurations {
}
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
sourceMap = true
sourceRoot = "_src"
}
tscCmd = "$projectDir/node_modules/.bin/tsc"
tsLintCmd = "$projectDir/node_modules/.bin/tslint"
esLintCmd = "$projectDir/node_modules/.bin/eslint"
npmCmd = "npm"
}
tasks.matching{ it.name =~ /^configureTs/ }.configureEach {
dependsOn "prepare"
}
tasks.matching{ it.name =~ /^lint/ }.configureEach {
onlyIf { lint }
}
task prepare {
}
task printVersion {
dependsOn prepare
doLast {
println "version: ${-> version}";
println "packageName: ${-> packageName}";
println "target: ${-> typescript.compilerOptions.target}";
println "module: ${-> typescript.compilerOptions.module}";
}
}
task clean {
prepare.mustRunAfter it
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"
}
assemble {
mustRunAfter sources.amd.output,
sources.cjs.output
from sources.amd.output.compiledDir
from sources.cjs.output.compiledDir
}
assembleTest {
mustRunAfter sources.amd.output,
sources.cjs.output,
sources.testAmd.output,
sources.testCjs.output
from sources.amd.output.compiledDir
from sources.cjs.output.compiledDir
from sources.testAmd.output.compiledDir
from sources.testCjs.output.compiledDir
}
task prepareLocalDebug {
prepare.mustRunAfter it
doLast {
tasks.matching{ it.name =~ /^configureTs/ }.configureEach {
compilerOptions {
sourceRoot = "file://" + it.rootDir
}
}
}
}
task prepareNode {
prepare.mustRunAfter it
doLast {
typescript {
compilerOptions {
module = "commonjs"
target = "es2017"
lib = ["es2017", "dom", "scripthost"]
}
}
}
}
task prepareBrowser {
prepare.mustRunAfter it
doLast {
packageName = "@$npmScope/$project.name-amd"
typescript {
compilerOptions {
module = "amd"
target = "es5"
lib = ["es5", "dom", "scripthost", "es2015.promise", "es2015.symbol", "es2015.iterable"]
}
}
}
}
task npmPackTypingsAmd(type: Copy) {
dependsOn sources.main.output
dependsOn sources.amd.output
npmPack.mustRunAfter it
from sources.main.output.typingsDir
from sources.amd.output.typingsDir
into "${->buildDir}/npm/pack"
}
task npmPackSourcesAmd(type: Copy) {
from sources.main.ts
from sources.amd.ts
npmPack.mustRunAfter it
into "${->buildDir}/npm/pack/_src"
}
task assembleBrowser {
dependsOn prepareBrowser, assemble, sources.amd.output
}
task assembleNode {
dependsOn prepareNode, assemble, sources.cjs.output
}
task assembleTestBrowser {
dependsOn prepareBrowser, prepareLocalDebug, assembleTest, sources.amd.output, sources.testAmd.output
}
task testBrowser {
dependsOn prepareBrowser, test, sources.amd.output, sources.testAmd.output
}
task testNode {
dependsOn prepareNode, test, sources.cjs.output, sources.testCjs.output
}
task npmPackBrowser {
dependsOn assembleBrowser, npmPack, npmPackSourcesAmd, npmPackTypingsAmd
}
task packJsTar(type: Tar) {
dependsOn assemble;
archiveBaseName = provider { packageName }
destinationDirectory = buildDir
archiveClassifier = provider { typescript.compilerOptions.module }
compression = Compression.GZIP
from(assemble.outputs)
doLast {
println archiveName;
}
}
task packTypingsTar(type: Tar) {
}
publishing {
publications {
local(IvyPublication) {
artifact(packJsTar) {
type = "js"
}
}
}
repositories {
ivy {
url "ivy-repo"
}
}
}