build.gradle
233 lines
| 5.1 KiB
| text/x-groovy
|
GroovyLexer
|
|
r87 | plugins { | |
|
|
r107 | id "org.implab.gradle-typescript" version "1.3.3" | |
|
|
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" | |
|
|
r100 | lint = project.hasProperty('lint') ? project.lint ?: true : 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 | |||
|
|
r107 | sourceRoot = packageName | |
|
|
r99 | } | |
| 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" | |||
|
|
r100 | } | |
|
|
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 { | |
|
|
r100 | 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"; | |||
|
|
r48 | } | |
|
|
r47 | } | |
|
|
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 | |||
|
|
r100 | from sources.amd.resources | |
|
|
r99 | } | |
| if (flavour == 'node') { | |||
| dependsOn sources.cjs.output | |||
| from sources.cjs.output.compiledDir | |||
|
|
r100 | from sources.cjs.resources | |
|
|
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 | |||
|
|
r100 | from sources.amd.resources | |
| from sources.testAmd.resources | |||
|
|
r99 | } | |
| if (flavour == 'node') { | |||
| dependsOn sources.cjs.output, sources.testCjs.output | |||
| from sources.cjs.output.compiledDir | |||
| from sources.testCjs.output.compiledDir | |||
|
|
r100 | 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 | |||
|
|
r92 | } | |
| } | |||
|
|
r99 | task npmPackTypings(type: Copy) { | |
|
|
r100 | npmPackContents.dependsOn it | |
|
|
r99 | 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 | ||
|
|
r100 | into npm.packageDir | |
|
|
r96 | } | |
|
|
r99 | task npmPackSources(type: Copy) { | |
|
|
r96 | from sources.main.ts | |
|
|
r100 | if (symbols == 'pack') { | |
| npmPackContents.dependsOn npmPackSources | |||
|
|
r101 | } | |
|
|
r99 | ||
| if (flavour == 'browser') { | |||
| from sources.amd.ts | |||
| } | |||
| if (flavour == 'node') { | |||
| from sources.cjs.ts | |||
| } | |||
|
|
r96 | ||
|
|
r100 | into npm.packageDir.dir("_src") | |
|
|
r96 | } | |
|
|
r100 | ||
|
|
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 | } |
