読者です 読者をやめる 読者になる 読者になる

gradle eclipse で、 TypeScript のプラグインを設定する

eclipse + Gradle で開発しているJava Web アプリに、TypeScriptを導入してみたいと思いまして、まずgradleでTypeScriptプラグインの設定ファイルを吐き出すよう試みました。 以下の2つのファイルを用意します(node.js, TypeScript, eclipeのTypeScriptプラグインが既にインストールされているとします)。

build.gradle

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'

task wrapper(type: Wrapper) {
    gradleVersion = '1.12'
}

eclipse {
  project {
    natures 'com.palantir.typescript.typeScriptNature'
    buildCommand 'com.palantir.typescript.typeScriptBuilder'
  }
  copy{
    from 'eclipse/com.palantir.typescript.prefs'
    into '.settings'
  }
}

eclipse/com.palantir.typescript.prefs

build.path.sourceFolder=src/main/typescript
compiler.codeGenTarget=ECMASCRIPT3
compiler.compileOnSave=true
compiler.generateDeclarationFiles=false
compiler.mapSourceFiles=false
compiler.moduleGenTarget=UNSPECIFIED
compiler.noImplicitAny=true
compiler.noLib=false
compiler.outputDirOption=src/main/webapp/js
compiler.outputFileOption=
compiler.removeComments=false
eclipse.preferences.version=1
editor.indentSize=4
formatter.insertSpaceAfterCommaDelimiter=true
formatter.insertSpaceAfterFunctionKeywordForAnonymousFunctions=false
formatter.insertSpaceAfterKeywordsInControlFlowStatements=true
formatter.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis=false
formatter.insertSpaceAfterSemicolonInForStatements=true
formatter.insertSpaceBeforeAndAfterBinaryOperators=true
formatter.placeOpenBraceOnNewLineForControlBlocks=false
formatter.placeOpenBraceOnNewLineForFunctions=false
spacesForTabs=true
tabWidth=4

で、

% ./gradlew eclipse

とか叩けば、TypeScriptを使用するプロジェクトになります。 src/main/typescript 配下に置いた .ts ファイルがコンパイルされて src/main/webapp/js 配下に .js ファイルが生成されるようになります。 あと、gradleからもTypeScriptのコンパイルをキックすべきかとも思うんですが、「IDEで生成されたJSをSCMに突っ込めばいいか」というのは、甘い考えかなー。