coffeescript2 インタプリタのtranspile オプションでrequire されたmodule に対して適用されない問題が既にmaster にマージされていた
CoffeeScript2 では、初代と同様にインタプリタとしても機能する。
CoffeeScript の仕様として ES Modules (import/export) や JSX をサポートしているものの、それはコンパイルを通すだけであり、実行時には環境に解釈される(=現状では動かない)というものとなっている。
(ので、サポートというか、シンタックスエラーとして扱わずそのまま JS にしてくれている、くらいの感覚。)
そこで CoffeeScript は Babel の使用をサポートしており、 .babelrc
を配置して --transpile
オプションを付与して実行するだけで、
Babel でのトランスパイルまで一度に行える。
サーバサイドのプログラムを babel-node
や ts-node
のように、coffee のインタプリタで動作させるにあたり、上記を使用して import/export
を使用できないかと試みた。
※teppeis さんのブログでも触れられていますが、ES Modules は今になっても安定していない(named import が使えなくなったり)ので、使っているのはカッコイイという理由だけです。長く使うコードでもないし。
しかし、実際には実行時にコマンドに渡したルートファイルのみ Babel でトランスパイルされるため、import されているファイルはトランスパイルされず、import/export の部分で Syntax Error が発生するという状態になっていました。
とりあえずissue に書いたところ、なんと既に master には merge されていたとのことで、手元で master で試して動作確認できました。
次のリリースには乗りそうなので安心ですね。めでたしめでたし。
CoffeeScript2、もともと Coffee 好きなので書いていた楽しい感じなのだけど、Flow の Type Annotation だけはどうにかならなかったのかなあ……。