2012年6月28日木曜日

Cakefile書こうとして一歩目から躓いたお話

ご無沙汰しています。
最近自分のコードを書く気力がなくてどんよりしてます。

さて。

突然ですが、私、ここ最近CoffeeScriptに魅了されております。
会社の先輩にそそのかされたとかなんとか。

仕事で結構な行数のJavaScriptを書くことがあるのですけど、素のJavaScriptを書いているとどうもしんどいことが多々有りまして。
その点CoffeeScriptだと、手軽にコードが書けて非常に便利です。

んで、諸々の事情により、CoffeeScriptを自動コンパイルする必要が出てきて、Cakefileの書き方を調べていたのですが、初手から躓いたので、そこら辺をメモしておきます。

一番単純な(ハズの)Cakefile

まずはと思って、CakeFileの使い方 -CoffeeScript-を参考に一番単純なCakefileを書いてみました。
sys = require 'sys'

sys.puts 'Heloi, word.'

するとなぜかエラー。
sys.puts〜を削除してもエラー。

ここでようやく、エラーメッセージを確認するわけですが、
path.existsSync is deprecated. It is now called `fs.existsSync`.

sys.js:1
throw new Error(
      ^
Error: The "sys" module is now called "util".
    at sys.js:1:69
    at NativeModule.compile (node.js:585:5)
    at Function.require (node.js:553:18)
    at Function._load (module.js:297:25)
    at Module.require (module.js:362:17)
    at require (module.js:378:17)
    at Object. (/Users/kyama/xxx/xxx/.../xxx/Cakefile:4:9)
    at Object. (/Users/kyama/xxx/xxx/.../xxx/Cakefile:8:4)
    at Module._compile (module.js:449:26)
    at Object.run (/Users/kyama/.node/v0.7.9/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:79:25)
とのこと。

おや?
どうやら6行目のメッセージによると "sys" は "util" に変わっているようです。

ということで、書き直して↓
util = require 'util'

util.puts 'Heloi, word.'

結果は↓
path.existsSync is deprecated. It is now called `fs.existsSync`.
Heloi, word.
Cakefile defines the following tasks:
    

結局 sys を util に変更することで事なきを得たという実にくだらないお話でした。
これで自分の環境が原因だったら更にくだらない…