Node.js + BabelでECMAScript6を使ってみる

Babelのサイトのドキュメントを参考にやってみました。

babeljs.io

まずはnpmコマンドでnode-clibabel-preset-es2015をインストールします。最近のBabelでは各種機能がプラグインの形で提供されており、必要な機能のみインストールして使用する形になっているようです。

$ npm install --save-dev babel-cli
$ npm install babel-preset-es2015

適当なディレクトリを作成してpackage.jsonを作成。

{
  "name": "my-project",
  "version": "1.0.0",
  "scripts":{
    "build": "babel src -d lib"
  },
  "devDependencies": {
    "babel-cli": "^6.0.0"
  }
}

使用するプリセットを指定するために同じ場所に.babelrcを作成。

{
  "presets": ["es2015"]
}

srcディレクトリを作成してその中にECMAScript6の機能を使用した適当なスクリプトを作成します。

let square = (x) => {
  return x * x;
};
console.log(square(19));

以下のようにするとlibディレクトリにトランスパイルされたJavaScriptが生成されます。

$ npm run build

以下のようにbabel-nodeコマンドをで対話シェルを使用したり、ファイルを指定して即時実行することもできます。

# 対話シェルを起動
$ ./node_modules/.bin/babel-node

# ファイルを指定して即時実行
$ ./node_modules/.bin/babel-node src/es6.js

プリセットを別途インストールして.babelrcで指定しないといけないあたりが若干面倒ですね。