Play2でTypeScriptを使う覚え書き
新規プロジェクトのためクライアントサイド開発に使うBetter JSを選定中。
2014/01/09現在の状況。
TypeScriptコンパイラの導入
TypeScriptコンパイラtscはNode.js上で実装されているので
- まずNode.jsをインストール http://nodejs.org/ (PATHも通す)
- npm install -g typescript
現時点で入るバージョンは0.9.5.0。
TypeScriptソースをJavascriptにコンパイルするプラグイン play2-typescript
play2-typescriptというのが出ているものの、これは最新版(0.3.0-RC1)がMavenリポジトリに上がっていない。上がっているのは古い0.2-RC10。
つまりREADMEに書いてあるインストール方法では動かない。
バージョン番号を古く書き直すとインストール自体は成功するのだが、実行時にTypeScriptのコンパイルでこける。tscの最近のバージョンではオプション指定が変更になったため(以前は--out と書いていたオプションが--outDirになった)。
play2-typescriptを自分でビルド
play2-typescriptはSBTでビルド構成されているので
- まずSBTをインストール http://www.scala-sbt.org/ (PATHは勝手に通る)
- play2-typescriptのソースを取ってきて展開し、そのディレクトリ上でsbt publish。最終段階でMavenリポジトリにアップロードしようとしてError出すけどそれは気にしない。
- できあがったtarget\scala-2.10\sbt-0.13の内容をすべて【個人フォルダ】\.m2\repository\com\github\mumoshu\play2-typescript_2.10_0.13\0.3.0-RC1 にコピーする。
これで、Play2がローカルディスクからplay2-typescriptを探してくれるようになる。
IDEの対応
IntelliJは未対応。
Eclipseではプラグインがリポジトリ http://eclipse-update.palantir.com/eclipse-typescript/ から導入可能。
使ってみる。
Play2プロジェクトのappディレクトリ内にassetsディレクトリを作って、その中にGreeter.tsを作る。
class Greeter { greeting: string; constructor(message: string) { this.greeting = message; } greet() { return "Hello, " + this.greeting; } bye() { return "Bye, " + this.greeting; } }
Play2アプリを起動して
Javascriptにコンパイルされたものが出て来ます。