2013年1月10日木曜日

TypeScriptのtsc -wでコンパイルされない件。(TypeScript tsc --watch never compile)

問題

TypeScriptのtscコマンドにおける-w(--watch:ソースファイルの変更を検知して自動的にコンパイルしてくれるオプション)が、どうも効いていない。
変更を検知するが、jsファイルを出力してくれない。

※環境
  • OS:Ubuntu 12.10 64bit
  • npm:1.1.69
  • TypeScript:0.8.1?

実行すると

$ tsc form.ts -w
Recompiling(Thu Jan 10 2013 00:46:49 GMT+0900 (JST)): /usr/lib/node_modules/typescript/bin/lib.d.ts,/path/form.ts

のような表示はされるが、form.jsファイルが出力されず。

ソースを変更すると上記の"Recompiling xxx"というのは表示されるものの、やっぱりjsファイルは出力されず。

回避方法

どうもバグのようですが、2013/1現在、修正されていない模様。

てことで
Typescript watch compiler
を使います。
これは、tscコマンドのwatchを常に行うようにしたものです。
インストールは以下の通り。
sudo npm install -g tscw

 

実行すると

$ tscw form.ts
TSCW is watching for changes, initializing first recompile.
  -> recompiling... done.
となり、ディレクトリを確認すると無事form.jsファイルが作成されていました。
※tscw -w form.ts ではない点に注意。

また、ソースを修正すると
$ tscw form.ts
TSCW is watching for changes, initializing first recompile.
  -> recompiling... done.

[1:10:11]: change detected in file form.ts
  -> recompiling... done.
 となり、変更を検知してコンパイルされていました。

tscwコマンドは、tscコマンドのオプションすべてが使えるようです。