# HG changeset patch # User cin # Date 2019-11-05 00:44:18 # Node ID 7071c0e728fe652f25672795894ee8960c2314c1 # Parent 2e1aa35d63712a4e83d696102e4d470d7fb64129 added properties to the build project flavour=(browser|node) controls the target runtime settings symbols=(none|local|pack) controls how the source maps are generated and sources are packed diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,14 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Launch browser tests", + "type": "node", + "request": "launch", + "program": "${workspaceFolder}/build/test/tests/index.js", + "cwd": "${workspaceFolder}/build/test", + "sourceMaps": true, + "preLaunchTask": "Build browser test" + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,15 @@ +{ + "version": "2.0.0", + "command": "./gradlew", + "type": "shell", + "tasks": [ + { + "label": "Build browser test", + "args": [ + "assembleTest", + "-Psymbols=local", + "-Pflavour=browser" + ] + } + ] +} \ No newline at end of file diff --git a/build.gradle b/build.gradle --- a/build.gradle +++ b/build.gradle @@ -4,18 +4,15 @@ plugins { id "ivy-publish" } -// если версия явно не заданы вычисляем ее из тэга ревизии v.{num}*** -// результатом будет версия '{num}.{distance}' где distance - расстояние от -// текущей ревизии до ревизии с тэгом -def tagDistance = 0; +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 = "@$npmScope/$name" - lint = project.hasProperty('lint') ? lint : false -} - -configurations { - + packageName = flavour == 'browser' ? "@$npmScope/$name-amd" : "@$npmScope/$name" + lint = project.hasProperty('lint') ? project.lint : false } sources { @@ -52,8 +49,21 @@ typescript { compilerOptions { types = [] declaration = true - sourceMap = true - sourceRoot = "_src" + + 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" @@ -61,32 +71,31 @@ typescript { npmCmd = "npm" } -tasks.matching{ it.name =~ /^configureTs/ }.configureEach { - dependsOn "prepare" -} - tasks.matching{ it.name =~ /^lint/ }.configureEach { onlyIf { lint } } -task prepare { - +if (symbols == 'local') { + tasks.matching{ it.name =~ /^configureTs/ }.configureEach { + compilerOptions { + sourceRoot = "file://" + it.rootDir + } + } } task printVersion { - dependsOn prepare - doLast { + println "packageName: ${-> packageName}"; println "version: ${-> version}"; - println "packageName: ${-> packageName}"; + println "flavour: ${-> flavour}"; println "target: ${-> typescript.compilerOptions.target}"; println "module: ${-> typescript.compilerOptions.module}"; + println "lint: ${-> lint}"; + println "symbols: ${-> symbols}"; } } task clean { - prepare.mustRunAfter it - doLast { delete buildDir } @@ -118,112 +127,68 @@ test { } 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 - } - } + if (flavour == 'browser') { + dependsOn sources.amd.output + from sources.amd.output.compiledDir + } + if (flavour == 'node') { + dependsOn sources.cjs.output + from sources.cjs.output.compiledDir } } -task prepareNode { - prepare.mustRunAfter it +assembleTest { + if (flavour == 'browser') { + dependsOn sources.amd.output, sources.testAmd.output - doLast { - typescript { - compilerOptions { - module = "commonjs" - target = "es2017" - lib = ["es2017", "dom", "scripthost"] - } - } + 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 } } -task prepareBrowser { - prepare.mustRunAfter it - - doLast { - packageName = "@$npmScope/$project.name-amd" +task npmPackTypings(type: Copy) { + npmPack.dependsOn it + dependsOn sources.main.output + + from sources.main.output.typingsDir - typescript { - compilerOptions { - module = "amd" - target = "es5" - lib = ["es5", "dom", "scripthost", "es2015.promise", "es2015.symbol", "es2015.iterable"] - } - } + if (flavour == 'browser') { + dependsOn sources.amd.output + from sources.amd.output.typingsDir } -} - -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 + if (flavour == 'node') { + dependsOn sources.cjs.output + from sources.cjs.output.typingsDir + } into "${->buildDir}/npm/pack" } -task npmPackSourcesAmd(type: Copy) { +task npmPackSources(type: Copy) { from sources.main.ts - from sources.amd.ts - - npmPack.mustRunAfter it + + if (flavour == 'browser') { + from sources.amd.ts + } + if (flavour == 'node') { + from sources.cjs.ts + } 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 +if (symbols == 'pack') { + npmPack { + dependsOn npmPackSources + } } -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; diff --git a/gradle.properties b/gradle.properties --- a/gradle.properties +++ b/gradle.properties @@ -4,4 +4,6 @@ author=Implab team description=Dependency injection, logging, simple and fast text processing tools license=BSD-2-Clause repository=https://bitbucket.org/implab/implabjs-core -npmScope=implab \ No newline at end of file +npmScope=implab +flavour=browser +symbols=pack \ No newline at end of file diff --git a/src/amd/ts/di/ResolverHelper.ts b/src/amd/ts/di/ResolverHelper.ts --- a/src/amd/ts/di/ResolverHelper.ts +++ b/src/amd/ts/di/ResolverHelper.ts @@ -4,7 +4,7 @@ import { TraceSource } from "../log/Trac import m = require("module"); const sandboxId = Uuid(); -define(sandboxId, ["require"], r => r); +define(sandboxId, ["require"], (r: any) => r); const globalRequire = getGlobal().require as Require || requirejs;