|
|
plugins {
|
|
|
id "org.implab.gradle-typescript" version "1.3.0"
|
|
|
id "org.implab.gradle-hg"
|
|
|
id "ivy-publish"
|
|
|
}
|
|
|
|
|
|
if (!symbols in ['local', 'pack', 'none'])
|
|
|
throw new Exception("The symbols property value is invalid: $symbols");
|
|
|
|
|
|
if (!flavour in ['browser', 'node'])
|
|
|
throw new Exception("The flavour property value is invalid: $flavour");
|
|
|
|
|
|
ext {
|
|
|
packageName = flavour == 'browser' ? "@$npmScope/$name-amd" : "@$npmScope/$name"
|
|
|
lint = project.hasProperty('lint') ? project.lint ?: true : false
|
|
|
}
|
|
|
|
|
|
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
|
|
|
|
|
|
if(symbols != 'none') {
|
|
|
sourceMap = true
|
|
|
sourceRoot = "_src"
|
|
|
}
|
|
|
|
|
|
if (flavour == 'node') {
|
|
|
module = "commonjs"
|
|
|
target = "es2017"
|
|
|
lib = ["es2017", "dom", "scripthost"]
|
|
|
} else if (flavour == 'browser') {
|
|
|
module = "amd"
|
|
|
target = "es5"
|
|
|
lib = ["es5", "dom", "scripthost", "es2015.promise", "es2015.symbol", "es2015.iterable" ]
|
|
|
}
|
|
|
}
|
|
|
tscCmd = "$projectDir/node_modules/.bin/tsc"
|
|
|
tsLintCmd = "$projectDir/node_modules/.bin/tslint"
|
|
|
esLintCmd = "$projectDir/node_modules/.bin/eslint"
|
|
|
}
|
|
|
|
|
|
tasks.matching{ it.name =~ /^lint/ }.configureEach {
|
|
|
onlyIf { lint }
|
|
|
}
|
|
|
|
|
|
if (symbols == 'local') {
|
|
|
tasks.matching{ it.name =~ /^configureTs/ }.configureEach {
|
|
|
compilerOptions {
|
|
|
sourceRoot = "file://" + it.rootDir
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
task printVersion {
|
|
|
doLast {
|
|
|
println "packageName: $packageName";
|
|
|
println "version: $version";
|
|
|
println "flavour: $flavour";
|
|
|
println "target: $typescript.compilerOptions.target";
|
|
|
println "module: $typescript.compilerOptions.module";
|
|
|
println "lint: $lint";
|
|
|
println "symbols: $symbols";
|
|
|
}
|
|
|
}
|
|
|
|
|
|
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 {
|
|
|
if (flavour == 'browser') {
|
|
|
dependsOn sources.amd.output
|
|
|
from sources.amd.output.compiledDir
|
|
|
from sources.amd.resources
|
|
|
}
|
|
|
if (flavour == 'node') {
|
|
|
dependsOn sources.cjs.output
|
|
|
from sources.cjs.output.compiledDir
|
|
|
from sources.cjs.resources
|
|
|
}
|
|
|
}
|
|
|
|
|
|
assembleTest {
|
|
|
if (flavour == 'browser') {
|
|
|
dependsOn sources.amd.output, sources.testAmd.output
|
|
|
|
|
|
from sources.amd.output.compiledDir
|
|
|
from sources.testAmd.output.compiledDir
|
|
|
from sources.amd.resources
|
|
|
from sources.testAmd.resources
|
|
|
}
|
|
|
if (flavour == 'node') {
|
|
|
dependsOn sources.cjs.output, sources.testCjs.output
|
|
|
|
|
|
from sources.cjs.output.compiledDir
|
|
|
from sources.testCjs.output.compiledDir
|
|
|
from sources.cjs.resources
|
|
|
from sources.testCjs.resources
|
|
|
}
|
|
|
}
|
|
|
|
|
|
typings {
|
|
|
if (flavour == 'browser') {
|
|
|
dependsOn sources.amd.output
|
|
|
from sources.amd.output.typingsDir
|
|
|
}
|
|
|
if (flavour == 'node') {
|
|
|
dependsOn sources.cjs.output
|
|
|
from sources.cjs.output.typingsDir
|
|
|
}
|
|
|
}
|
|
|
|
|
|
task npmPackTypings(type: Copy) {
|
|
|
npmPackContents.dependsOn it
|
|
|
dependsOn sources.main.output
|
|
|
|
|
|
from sources.main.output.typingsDir
|
|
|
|
|
|
if (flavour == 'browser') {
|
|
|
dependsOn sources.amd.output
|
|
|
from sources.amd.output.typingsDir
|
|
|
}
|
|
|
if (flavour == 'node') {
|
|
|
dependsOn sources.cjs.output
|
|
|
from sources.cjs.output.typingsDir
|
|
|
}
|
|
|
|
|
|
into npm.packageDir
|
|
|
}
|
|
|
|
|
|
task npmPackSources(type: Copy) {
|
|
|
from sources.main.ts
|
|
|
if (symbols == 'pack') {
|
|
|
npmPackContents.dependsOn npmPackSources
|
|
|
}
|
|
|
|
|
|
if (flavour == 'browser') {
|
|
|
from sources.amd.ts
|
|
|
}
|
|
|
if (flavour == 'node') {
|
|
|
from sources.cjs.ts
|
|
|
}
|
|
|
|
|
|
into npm.packageDir.dir("_src")
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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"
|
|
|
}
|
|
|
}
|
|
|
}
|