build.gradle
224 lines
| 4.7 KiB
| text/x-groovy
|
GroovyLexer
|
|
r87 | plugins { | |
|
|
r93 | id "org.implab.gradle-typescript" version "1.0.1-rc3" | |
|
|
r97 | id "org.implab.gradle-hg" | |
|
|
r95 | id "ivy-publish" | |
|
|
r87 | } | |
|
|
r99 | 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"); | |||
|
|
r68 | ||
|
|
r93 | ext { | |
|
|
r99 | packageName = flavour == 'browser' ? "@$npmScope/$name-amd" : "@$npmScope/$name" | |
| lint = project.hasProperty('lint') ? project.lint : false | |||
|
|
r95 | } | |
|
|
r87 | sources { | |
|
|
r89 | amd { | |
|
|
r90 | typings { | |
| srcDir main.output.typingsDir | |||
| } | |||
|
|
r89 | } | |
| cjs { | |||
|
|
r90 | 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 | |||
| } | |||
|
|
r89 | } | |
|
|
r59 | } | |
|
|
r87 | typescript { | |
| compilerOptions { | |||
| types = [] | |||
|
|
r89 | declaration = true | |
|
|
r99 | ||
| 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" ] | |||
| } | |||
|
|
r59 | } | |
|
|
r91 | tscCmd = "$projectDir/node_modules/.bin/tsc" | |
| tsLintCmd = "$projectDir/node_modules/.bin/tslint" | |||
| esLintCmd = "$projectDir/node_modules/.bin/eslint" | |||
|
|
r87 | npmCmd = "npm" | |
|
|
r59 | } | |
|
|
r47 | ||
|
|
r94 | tasks.matching{ it.name =~ /^lint/ }.configureEach { | |
| onlyIf { lint } | |||
| } | |||
|
|
r99 | if (symbols == 'local') { | |
| tasks.matching{ it.name =~ /^configureTs/ }.configureEach { | |||
| compilerOptions { | |||
| sourceRoot = "file://" + it.rootDir | |||
| } | |||
| } | |||
|
|
r92 | } | |
|
|
r47 | task printVersion { | |
|
|
r48 | doLast { | |
|
|
r99 | println "packageName: ${-> packageName}"; | |
|
|
r92 | println "version: ${-> version}"; | |
|
|
r99 | println "flavour: ${-> flavour}"; | |
|
|
r92 | println "target: ${-> typescript.compilerOptions.target}"; | |
| println "module: ${-> typescript.compilerOptions.module}"; | |||
|
|
r99 | println "lint: ${-> lint}"; | |
| println "symbols: ${-> symbols}"; | |||
|
|
r48 | } | |
|
|
r47 | } | |
|
|
r4 | task clean { | |
| doLast { | |||
| delete buildDir | |||
|
|
r59 | } | |
| } | |||
|
|
r88 | npmPackMeta { | |
| meta { | |||
|
|
r89 | name = packageName | |
|
|
r60 | } | |
| } | |||
|
|
r90 | ||
|
|
r92 | configureTsCjs { | |
|
|
r90 | dependsOn sources.main.output | |
|
|
r93 | compilerOptions { | |
| types += [ "node" ] | |||
| } | |||
|
|
r90 | } | |
| configureTsAmd { | |||
|
|
r92 | dependsOn sources.main.output | |
|
|
r90 | compilerOptions { | |
| types += [ "requirejs", "dojo-typings" ] | |||
| } | |||
| } | |||
|
|
r91 | test { | |
| workingDir layout.buildDirectory.dir("test"); | |||
| commandLine "node", "tests/index.js" | |||
| } | |||
|
|
r97 | assemble { | |
|
|
r99 | if (flavour == 'browser') { | |
| dependsOn sources.amd.output | |||
| from sources.amd.output.compiledDir | |||
| } | |||
| if (flavour == 'node') { | |||
| dependsOn sources.cjs.output | |||
| from sources.cjs.output.compiledDir | |||
|
|
r98 | } | |
| } | |||
|
|
r99 | assembleTest { | |
| if (flavour == 'browser') { | |||
| dependsOn sources.amd.output, sources.testAmd.output | |||
|
|
r92 | ||
|
|
r99 | from sources.amd.output.compiledDir | |
| from sources.testAmd.output.compiledDir | |||
| } | |||
| if (flavour == 'node') { | |||
| dependsOn sources.cjs.output, sources.testCjs.output | |||
| from sources.cjs.output.compiledDir | |||
| from sources.testCjs.output.compiledDir | |||
|
|
r92 | } | |
| } | |||
|
|
r99 | task npmPackTypings(type: Copy) { | |
| npmPack.dependsOn it | |||
| dependsOn sources.main.output | |||
| from sources.main.output.typingsDir | |||
|
|
r93 | ||
|
|
r99 | if (flavour == 'browser') { | |
| dependsOn sources.amd.output | |||
| from sources.amd.output.typingsDir | |||
|
|
r92 | } | |
|
|
r99 | if (flavour == 'node') { | |
| dependsOn sources.cjs.output | |||
| from sources.cjs.output.typingsDir | |||
| } | |||
|
|
r96 | ||
| into "${->buildDir}/npm/pack" | |||
| } | |||
|
|
r99 | task npmPackSources(type: Copy) { | |
|
|
r96 | from sources.main.ts | |
|
|
r99 | ||
| if (flavour == 'browser') { | |||
| from sources.amd.ts | |||
| } | |||
| if (flavour == 'node') { | |||
| from sources.cjs.ts | |||
| } | |||
|
|
r96 | ||
|
|
r98 | into "${->buildDir}/npm/pack/_src" | |
|
|
r96 | } | |
|
|
r99 | if (symbols == 'pack') { | |
| npmPack { | |||
| dependsOn npmPackSources | |||
| } | |||
|
|
r98 | } | |
|
|
r95 | 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; | |||
| } | |||
| } | |||
|
|
r96 | task packTypingsTar(type: Tar) { | |
| } | |||
|
|
r95 | publishing { | |
| publications { | |||
| local(IvyPublication) { | |||
| artifact(packJsTar) { | |||
| type = "js" | |||
| } | |||
| } | |||
| } | |||
| repositories { | |||
| ivy { | |||
| url "ivy-repo" | |||
| } | |||
| } | |||
|
|
r90 | } |
