def typescriptOut = new File(buildDir, 'generated/typescript') def typescriptRoot = 'src/main/js' def typescriptRootFile = new File(rootDir.absolutePath, typescriptRoot) task typescript(group: 'build') { inputs.dir typescriptRootFile outputs.dir typescriptOut doFirst { project.delete { delete typescriptOut } typescriptOut.mkdirs() project.exec { workingDir typescriptRootFile executable 'npm' args 'run', 'build', '--' args '--outDir', new File(typescriptOut, 'scriptcraft').absolutePath } } } task eslint(group: 'verification', type: Exec) { workingDir typescriptRootFile executable 'npm' args 'run', 'eslint' } processResources.dependsOn typescript def typedocOut = new File(buildDir, 'typedoc') task typedoc(group: 'documentation') { inputs.dir typescriptRootFile outputs.dir typedocOut doFirst { project.delete { delete typedocOut } typedocOut.mkdirs() project.exec { workingDir typescriptRootFile executable 'npm' args 'run', 'typedoc', '--' args '--out', typedocOut.absolutePath } } } processResources { from typescriptOut.absolutePath } task typedocJar(type: Jar) { classifier 'typedoc' from typedocOut } typedocJar.dependsOn typedoc artifacts { archives typedocJar }