TypeScript Gradle Plugin
This plugin makes it easy to build TypeScript projects using Gradle. Among other things, the plugin provides a task to run the TypeScript compiler.
Examples
Several example projects can be found in /examples.
Prerequisites
You need to have installed node.js and installed the typescript node module:
npm install -g typescript
Alternatively on windows you can install the Typescript SDK and configure the compilerExecutable config option to tsc - see Available configuration options.
Quickstart
This will guide you through the steps needed to set up typescript-gradle-plugin for a TypeScript application project using Maven/Gradle standard layout.
Plugin dependency
As this is not a core Gradle plugin, you have to ensure, that Gradle knows how to get the plugin. Do do this, add the following lines to your build.gradle:
buildscript {
repositories {
maven {
url 'https://dl.bintray.com/sothmann/gradle-plugins'
}
mavenCentral()
}
dependencies {
classpath 'de.richsource.gradle.plugins:typescript-gradle-plugin:1.5'
}
}
Next, apply the plugin.
apply plugin: "typescript"
Configuring the TypeScript compile task
You can configure the TypeScript compile task as shown below:
compileTypeScript {
sourcemap = true
// additional configuration options
}
Run the TypeScript compiler
gradle compileTypeScript
Available configuration options
Here is a list of the available configuration options of the compileTypeScript task:
source- (File) directories to compile, defaults tosrc/main/tsoutputDir- (File) the output directory, defaults to buildDir/tsout- (File) Concatenate and emit output to single file, e.g.file("${buildDir}/js/out.js")module- (de.richsource.gradle.plugins.typescript.Module) Specify module code generation (AMD,COMMONJS,SYSTEM,UMD)target- (de.richsource.gradle.plugins.typescript.Target) Specify ECMAScript target version (ES3,ES5orES6)declaration- (boolean) Generates corresponding .d.ts filenoImplicitAny- (boolean) Warn on expressions and declarations with an implied 'any' typenoResolve- (boolean) Skip resolution and preprocessingremoveComments- (boolean) Do not emit comments to outputsourcemap- (boolean) Generates corresponding .map filesourceRoot- (File) Specifies the location where debugger should locate TypeScript files instead of source locationscodepage- (Integer) Specify the codepage to use when opening source filesmapRoot- (File) Specifies the location where debugger should locate map files instead of generated locationscompilerExecutable- (String) The tsc compiler executable to use. Defaults tocmd /c tsc.cmdon windows andtscon other systems.noEmitOnError- (boolean) Do not emit outputs if any type checking errors were reportednoEmit- (boolean) Do not emit outputsexperimentalDecorators- (boolean) Enables experimental support for ES7 decoratorsnewline- (de.richsource.gradle.plugins.typescript.Newline) Specifies the end of line sequence to be used when emitting files (CRLForLF)preserveConstEnums- (boolean) Do not erase const enum declarations in generated codeprojectFileDir- (File) Compile the project in the given directory where a tsconfig.json file is present. File specified with thesourceoption will be ignore, but you should still explicitely configure the source files as this will make the Gradle UP-TO-DATE check work.rootDir- (File) Specifies the root directory of input files. Use to control the output directory structure withoutDir.suppressImplicitAnyIndexErrors- (boolean) Suppress noImplicitAny errors for indexing objects lacking index signaturesnoEmitHelpers- (boolean) Do not emit helpers like__extendsinlineSourceMap- (boolean) Causes source map files to be written inline in the generated .js files instead of in a independent .js.map fileinlineSources- (boolean) Allows for additionally inlining the source .ts file into the .js file when used in combination withinlineSourceMap
Integrating the compiled files into a WAR file (for Java Webapps)
If you are integrating TypeScript into a Java web application, you can easily integrate the compiled files into the WAR file. All you have to do is to configure the war task to pick up the compiled files. Whenever you call the war task, the TypeScript compiler will compile your TypeScript files first. In the example below, the compiled files will be put into the js directory in the WAR file.
apply plugin: "war"
war {
into("js") {
from compileTypeScript.outputs
}
}
Configuring multiple source directories
You can configure the TypeScript compile task to use multiple source directories as shown below:
compileTypeScript {
source = [file("src/main/ts"), file("src/main/additionalts")]
}

