##// END OF EJS Templates
restructuring
restructuring

File last commit:

r175:fc69b40ceb98 tip default
r175:fc69b40ceb98 tip default
Show More
build.gradle
197 lines | 5.9 KiB | text/x-groovy | GroovyLexer
cin
Move to org.implab.gradle-typescript
r87 plugins {
cin
wip migrating on new typescript build plugin
r174 id "org.implab.gradle-typescript"
id "org.implab.gradle-npm-package"
id "ivy-publish"
cin
working on publications
r95 }
cin
wip migrating on new typescript build plugin
r174 typescript {
useTsc npm.bin("tsc")
cin
migrating to new project plugin 1.0.1-rc1...
r90
cin
wip migrating on new typescript build plugin
r174 compilerOptions {
incremental = true
cin
migrating tests to the new project structure
r89 }
cin
restructuring
r175
jsVariants {
node {
jsRuntime = "node"
jsModule = "commonjs"
}
browser {
jsRuntime = "browser"
jsModule = "amd"
}
}
cin
working on support commonjs modules format
r59 }
cin
wip migrating on new typescript build plugin
r174 def typingsFromMain = {
sets {
named("compileOnlyTypings") {
srcDir main.output("typings")
cin
added properties to the build project...
r99 }
}
cin
working on build.gradle
r92 }
cin
wip migrating on new typescript build plugin
r174 variants {
cin
restructuring
r175 all {
}
}
// варианты сборки
variants {
cin
wip migrating on new typescript build plugin
r174 configureEach { variant ->
cin
restructuring
r175 // для каждого варианта есть стандартные настройки
cin
wip migrating on new typescript build plugin
r174 def sourceSetLocation = { setName, self ->
self.sourceSetDir = layout.projectDirectory.dir("src/${setName}")
self.outputsDir = layout.buildDirectory.dir("${variant.name}/${setName}")
}
cin
working on multiplaftorm support (node, browser)
r47
cin
wip migrating on new typescript build plugin
r174 def main = sources.register("${variant.name}Main", sourceSetLocation.curry("main"))
def test = sources.register("${variant.name}Test", sourceSetLocation.curry("test"))
cin
migrating to new project plugin 1.0.1-rc1...
r90
cin
restructuring
r175 // явно добавляем наборы в вариант для применения политик и агрегации результатов
cin
wip migrating on new typescript build plugin
r174 sourceSets {
cin
restructuring
r175 add(main, role: "main")
add(test, role: "test")
cin
wip migrating on new typescript build plugin
r174 }
cin
working build and test for browser and node targets
r93 }
cin
wip migrating on new typescript build plugin
r174 register("browser") {
cin
restructuring
r175 // специфичные наборы для варианта
def srcMainAmd = sources.register("mainAmd", typingsFromMain)
cin
wip migrating on new typescript build plugin
r174 def srcTestAmd = sources.register("testAmd", typingsFromMain)
cin
restructuring
r175 // применение аспекта компиляции ts для данного варианта
cin
wip migrating on new typescript build plugin
r174 // advice to all TypescriptCompile tasks
typescriptCompile {
baseTsConfig = file("src/tsconfig.browser.json")
}
cin
migrating to new project plugin 1.0.1-rc1...
r90
cin
restructuring
r175 sourceSets {
add(srcMainAmd, role: "main")
add(srcTestAmd, role: "test")
}
}
register("node") {
// специфичные наборы для варианта
def srcMainCjs = sources.register("mainCjs", typingsFromMain)
def srcTestCjs = sources.register("testCjs", typingsFromMain)
// применение аспекта компиляции ts для данного варианта
typescriptCompile {
baseTsConfig = file("src/tsconfig.node.json")
cin
wip migrating on new typescript build plugin
r174 }
cin
migrating to new project plugin 1.0.1-rc1...
r90
cin
wip migrating on new typescript build plugin
r174 sourceSets {
cin
restructuring
r175 add(srcMainCjs, role: "main")
add(srcTestCjs, role: "test")
cin
wip migrating on new typescript build plugin
r174 }
}
cin
Working on build, vs code tasks
r98 }
cin
restructuring
r175 npmPackaging {
cin
wip migrating on new typescript build plugin
r174 usePackageJson()
metadata {
name = "@implab/core"
version = project.provider { project.version.toString() }
cin
working on build.gradle
r92 }
cin
restructuring
r175
// creates writeBrowserPackageJson npmPackBrowser, npmPublishBrowser
variant("browser") {
metadata {
name = "@implab/core-amd"
}
variantOutputs("main")
}
// creates writeNodePackageJson, npmPackNode, npmPublishNode
variant("node") {
metadata {
name = "@implab/core-node"
}
variantOutputs("main")
}
// creates writePackageJson, npmPack, npmPublish
package {
metadata {
name = "@implab/core-amd"
}
content { // CopySpec
// как-то кривенько
from(variants.named("node").map { it.outputs("main") }) {
into "dist/node"
}
from(variants.named("browser").map { it.outputs("main") }) {
into "dist/node"
}
}
}
}
outgoingJs {
}
outgoingVariants {
// registers nodeElements configuration
variant("node") { // ConfigurationPublications
// как-то шумно
attribute(JS_RUNTIME, "node")
attribute(JS_MODULE, "commonjs")
attribute(JS_TARGET, "es2020")
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, "npm-module"))
// основной артефакт, связь по имени задачи, неудачный вариант
artifact(tasks.named("npmPackNode"))
// variants... кругом variants
variants {
exploded {
attributes {
// шумновато, но это стандартное API gradle
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, "exploded-npm-module"))
}
// связь по имени задачи, неудачный вариант
artifact(tasks.named("assembleNodeModule"))
}
typings {
attributes {
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, "typescript-typings"))
}
// связь по имени задачи, неудачный вариант
artifact(tasks.named("assembleNode"))
}
}
}
variant("browser") {
// все те же проблемы что и для variant("node")
attribute(JS_RUNTIME, "browser")
attribute(JS_MODULE, "amd")
attribute(JS_TARGET, "es2015")
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, "npm-module"))
artifact(tasks.named("npmPackBrowser"))
variants {
variants {
typings {
attributes {
attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, "typescript-typings"))
}
artifact(tasks.named("assembleNode"))
}
}
}
}
cin
added tasks to pack typings and sources to npm packages
r96 }
cin
working on publications
r95 publishing {
cin
restructuring
r175 repositories {
ivy {
url "${System.properties["user.home"]}/ivy-repo"
cin
working on publications
r95 }
}
cin
restructuring
r175 publications {
ivy(IvyPublication) {
from components.js
cin
working on publications
r95 }
}
cin
migrating to new project plugin 1.0.1-rc1...
r90 }