IntelliJ IDEA で coffeescript をデバッグする設定メモ

IntelliJ IDEA で coffeescript をローカルデバッグするまでのメモ。

環境

  • OSX 10.8.3
  • nodebrew 0.6.2
  • node v0.10.4
  • CoffeeScript version 1.6.2 ← source maps を作成するには 1.6.1 以上が必須!
  • IntelliJ IDEA 12.1.1 ← node.js & coffeescript プラグイン導入済み、node.js & coffeescript PATH 設定済み

設定手順

まず、ざっくりと coffeescriptデバッグどうやるかというと、オリジナルの coffeescript から Source MapsJavaScript ファイルを作成、その JS ファイルRun/Debug Configurations で設定して実行する、といった感じ。
あ、もちろん、Breakpointcoffeescript の CodeEditor 内で設定しますです。
基本的には Debugging CoffeeScript を参照しながらやれば大丈夫だったのですがわりとハマったのでメモ。

File Watchers

まず、File Watchers の設定をしないといけねーです。
Transpiling CoffeeScript to JavaScript 参考です。
IntelliJ IDEA > Preferences > File Watchers (Command + A で File Watchers のがはやいかもね)で Project Settings の File Watchers をひらく。
以下よりただ実行したいだけのときは、CoffeeScript を選択、CoffeeScript Source Map を選択とある。

If you are going to run your CoffeeScript without debugging, choose CoffeeScript. Your code will be just translated to JavaScript.

If you are going to debug your code, choose CoffeeScript Source Map. As a result, the source maps will be created.

デバッグしたいので CoffeeScript Source Map かなっと思ったけどデバッグのときは両方とも選択します。

で、選択云々の前に CoffeeScript や CoffeeScript Source Map がそもそもないので下部の + ボタンから追加します。

CoffeeScript のほうは、コンパイラとして設定するので標準のよいです。

Name Description File type Scope Program Arguments Working directory Output paths
CoffeeScript Compiles .coffee files into .js files CoffeeScript Files Project Files /Users/user/.nodebrew/current/bin/coffee --compile $FileName$ $FileDir$ $FileNameWithoutExtension$.js

f:id:isann:20130522172047p:plain

CoffeeScript Source Map のほうがちょっとハマりまして、Source Maps を出力できる設定にしてやる必要があり、標準の coffeescript ではなかったのですよ…。
IDE 関係なく、CLI な感じでやるばあい(というかここおさえてから IDE やるべきだよな)はこちらから。Node.js+CoffeeScript でソースマップを使ってデバッグを楽にする方法 - てっく煮ブログ

Name Description File type Scope Program Arguments Working directory Output paths
CoffeeScript Source Map Uses Redux compiler to generate source map for .coffee file CoffeeScript Files Project Files /Users/user/.nodebrew/node/v0.10.4/lib/node_modules/coffee-script-redux/bin/coffee --source-map -i $FileName$ $FileDir$ $FileNameWithoutExtension$.js.map

f:id:isann:20130522172052p:plain

Environment variables はどちらも設定していませんので省略してます。オプションもデフォルトのままです。
ファイル変更するたびに tasks 動かないようにもできるはずですがわたしはうまくいってないので Immediate file synchronizastion もチェックしたままです。

Watchers の設定はこれでいけるはずです。

File Watchers で出力させる

適当に coffeescript のファイルを作成してコードを書いてみます。
自動でか、設定によっては Command + S の File > Save All のタイミングで tasks が実行されます。
結果、hoge.coffee の左側に▷みたいな三角ができます。
開くと hoge.js と hoge.js.map ができとりますです。
できてなかったらミスっとります。

f:id:isann:20130522172407p:plain

hoge.js.map の中身はのぞいてみとくといいかもです。
わたし、coffee-script-redux ではなく普通の coffee を指定していて中身が coffee> になっていました。これはダメですよ。

Run/Debug Configurations

ここまできたらもう少し。
Run/Debug Configurations から Node.js で設定作成。
ポイントになるのは Path to Node App JS File でオリジナルの coffeescript から生成された javascript を指定すること。
coffee とか source maps ではないことに注意です。
また、Run with CoffeeScript plugin をチェックいれないです。 ここまでやってOK。
あとは元の coffeescriptBreakpoint を設定してみて、今設定した設定名を選択、虫のボタン(デバッグボタン)をクリックするとデバッグできます。

f:id:isann:20130522172054p:plain

終わり。

そのうち、coffee-script-reduxcoffeescript 本体に統合されるんでしょうかね。