plugins { id "org.implab.gradle-typescript" id "org.implab.gradle-npm-package" id "ivy-publish" } typescript { useTsc npm.bin("tsc") compilerOptions { incremental = true } } def typingsFromMain = { sets { named("compileOnlyTypings") { srcDir main.output("typings") } } } variants { configureEach { variant -> def sourceSetLocation = { setName, self -> self.sourceSetDir = layout.projectDirectory.dir("src/${setName}") self.outputsDir = layout.buildDirectory.dir("${variant.name}/${setName}") } def main = sources.register("${variant.name}Main", sourceSetLocation.curry("main")) def test = sources.register("${variant.name}Test", sourceSetLocation.curry("test")) sourceSets { add(main) { role "main" } add(test) { role "test" } } } register("browser") { def srcAmd = sources.register("amd", typingsFromMain) def srcTestAmd = sources.register("testAmd", typingsFromMain) // advice to all TypescriptCompile tasks typescriptCompile { baseTsConfig = file("src/tsconfig.browser.json") } // creates npmPackBrowser, npmPublishBrowser npmPackage { usePackageJson() metadata { name = "@implab/core-amd" } content { from sourceSets.byRoles("main").allOutputs() } } sourceSets { add(srcAmd) { role "main" } add(srcTestAmd) { role "test" } } } register("node") { def srcCjs = sources.register("cjs", typingsFromMain) def srcTestCjs = sources.register("testCjs", typingsFromMain) compileTasks { baseTsConfig = file("src/tsconfig.node.json") } npmPackage { name = "@implab/core" } sourceSets { add srcAmd add srcTestAmd } } npmPackage { usePackageJson() metadata { name = "@implab/core" version = project.provider { project.version.toString() } } } publishing { publications { local(IvyPublication) { artifact(packJsTar) { type = "js" } } } repositories { ivy { url "ivy-repo" } } }