def typescriptRoot = 'src/main/ts' def typescriptRootFile = new File(rootDir.absolutePath, typescriptRoot) def typescriptOut = new File(typescriptRootFile, 'lib/ts') def dtsOut = new File(typescriptRootFile, 'lib/dts') task typescript(group: 'typescript', type: Exec) { inputs.dir typescriptRootFile outputs.dirs typescriptOut, dtsOut workingDir typescriptRootFile executable 'npm' args 'run', 'build' doFirst { project.delete { delete typescriptOut, dtsOut } } } task typescriptAPI(group: 'typescript', type: Tar) { into('/package') { into('types') { from new File(typescriptRootFile as File, 'src/types') } into('lib') { from dtsOut } from new File(typescriptRootFile as File, 'package.json') } classifier 'api' compression Compression.GZIP extension 'tar.gz' } typescriptAPI.dependsOn typescript artifacts { archives typescriptAPI } task eslint(group: 'typescript', type: Exec) { workingDir typescriptRootFile executable 'npm' args 'run', 'eslint' } processResources.dependsOn typescript def typedocOut = new File(typescriptRootFile, 'lib/typedoc') task typedoc(group: 'typescript', type: Exec) { inputs.dir typescriptRootFile outputs.dir typedocOut workingDir typescriptRootFile executable 'npm' args 'run', 'typedoc' doFirst { project.delete { delete typedocOut } } } processResources { from(typescriptOut.absolutePath) { into 'scriptcraft' } }