CoffeeScript

coffeescriptを残したままcoffeescript2を使いたい

2017年、久しぶりにcoffee scriptがメジャーアップデートを行いました。

「coffeescript?オワコンだろ?」と言われる中、jsの括弧の多さに辟易してtype scriptやES6へ進めない、進みたくないcoffee使いの方は根強く存在していると思われます。(知らんけど)

しかしcoffee script2(以下2系)はES2015/6に準拠する形でのコンパイルが行われるらしいので、互換性の心配が付きまといます。しかし同時にasync/awaitが使えるようになったというので興味はあります。

過去にcoffeeで書いた遺産が動かなくなったら困るので移行できない、でも使ってみたい。

そこで私はcoffeescriptを残したまま「coffeescript2」をインストールすることにしました。

:exclamation: 2018/03/19追記
coffee-scriptはcoffeeコマンドを呼び出す場所(ディレクトリ)直下のnode_modulesを探し、そこにcoffee-scriptがあれば(ローカルインストールしていれば)それを優先して使用します。
:exclamation: 長々と書いていますが,coffeeコマンドを呼び出す場所にローカルインストールしていればそこだけで使えます。他の場所には影響しませんので2系を使う場所でローカルインストールすればいいだけです。

概要

  1. 適当な場所に2系をインストールする
  2. パスの通った場所にシンボリックリンクを張る
  3. 「coffee2」というコマンドが使えるようになる

実践

1. 適当な場所に2系をインストールする

場所は本当にどこでもいいです。仮に$HOME/node_modules_altというディレクトリにインストールしてみましょう。

cd
mkdir node_modules_alt
cd node_modules_alt
npm i -y

これで場所の準備はできました。インストールしてみましょう。
ローカルインストールですので-gオプションを付けないように注意してください。

npm i coffeescript

1系か2系かややこしくなりそうなので名前を変えても良いと思います(任意)

cd node_modules
mv coffeescript coffeescript2

2. パスの通った場所にシンボリックリンクを張る

このままでは当然「coffee2」というコマンドは使えませんのでリンクを張ります。
私は$HOME/binという場所にパスを通しています。
無い人は以下の様に。

cd
mkdir bin

この場所にパスを通すために.bashrc.zshrcなどに追記します。

.bashrc/.zshrc
export PATH=$HOME/bin:$PATH

あとはリンクを張るだけです。

cd ~/bin
ln -s ~/node_modules_alt/node_modules/coffeescript2/bin/coffee coffee2

3. 「coffee2」というコマンドが使えるようになる

試してみましょう。

> coffee2  --version
CoffeeScript version 2.2.3

念のためにcoffeeも。

> coffee --version
CoffeeScript version 1.12.7

これで2系が使えるようになりました。
あとは今までコンパイルの時に使っていたcoffeeコマンドをcoffee2に変えるだけです。
不具合があったらまたcoffeeに変えるだけで戻せます。

enjoy your coffee life!! :laughing: