プログラミング

Babel とは?

投稿日:2017年7月3日 更新日:

1. Babel とは?

Babel とは、新しい機能を使って書いた JavaScript のコードを、以前のバージョンの書き方に変換してくれるツールです。

近年、JavaScript には便利な文法が数多く導入されており、コードが書きやすくなっています。しかし、古いウェブブラウザではこれらに対応していません。ですので、プログラムの動作対象となるウェブブラウザの範囲を広げようと思うと、昔の面倒な書き方をしなければいけないということになり不便です。
こんなとき Babel を使うと、新しい文法を使って書いたコードを、古い書き方に変換することができるので、古いウェブブラウザでも動作させることができるのです。

ということで、以下のように使います。

  1. 新機能を使って JavaScriptのコードを書く
  2. そのファイルを Babel に読み込ませ、以前の書き方に変換したファイルを出力させる
  3. 2で出力されたファイルを Webサーバーに配置する

スポンサードリンク

2. JavaScript のバージョン

現在の JavaScript は ECMAScript という仕様として定義されています。

ECMAScript の主なバージョンの変遷は以下になります。

ES5 --> ES2015 (ES6) --> ES2016 (ES7) --> ES2017 (ES8)

参考

3. プラグイン (plugins)

Babel の変換機能は、変換する機能毎にプラグインとして実装されています。

4. プリセット (preset)

プラグインを特定のカテゴリでまとめたものをプリセットと言います。

ECMAScript のバージョンで分類したプリセットには以下があります。

ES2015

ES2016

ES2017

実際に利用したいのは、Env というプリセットです。

Env

  • targetsオプションで指定した環境(ブラウザや Node.js のバージョン)に必要なプラグインだけを使用することができるプリセットです。対象とする環境で既に実装されている機能については変換処理を行わないため、生成されるコードに無駄がありません。
  • ブラウザのバージョンを指定する場合(Node.jsではなく)は、browserl.ist を使って記述することができます。(記述例はこちらでも説明されています –> ai/browserslist
  • 参照: Env preset · Babel

以下は非推奨となったプリセットです。

Latest (非推奨)

  • 現在はこのプリセットを使用することは推奨されていません。
  • es2015, es2016, es2017 の全ての変換を行います。
  • ブラウザを指定するようなことはできず、どんなコードも ES5 に変換されます。

使用するプリセットが決まったら、該当する npm モジュールをインストールして使用します。

その他にもプリセットはありますが、詳細は以下のリンク先をご覧ください。

参考

5. 基本的な使い方

お勧めのプリセットは Env です。なるべく targets オプションで、対象とする環境を指定しましょう。

開発用のプロジェクトディレクトリ直下に、設定ファイル .babelrc を作る際は、例えば、以下のような記述を行うことになります。

{
  "presets": [
    ["@babel/preset-env", {
      "targets": {
        "node": "6.10"
      }
    }]
  ]
}

6. Babel のイメージ

以下の関係を図にしてみました。

  • JavaScriptコード
  • プラグイン (Plugins)
  • プリセット (Presets)
  • ブラウザ

※ babel-core v6.25.0

Babelのイメージ(クリックすると拡大できます)
  • 実際は「ES2015までサポートしているブラウザ」というように、サポートしている機能がECMAScriptのバージョンによってきっちりと分類できるブラウザはありません。機能毎にサポートしていたり、サポートしていなかったりします。

📂-プログラミング

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

docker

Docker を使って特定のバージョンのPHPコマンドを実行する方法

PHP: Supported Versions を見てみると、現在サポートされているPHPのバージョンは、7.2系統、7.1系統、7.0系統、5.6系統の4種類であることが分かります。PHP: Dow …

React Redux

React + Redux の最小限の雛形コード

ここに載せている JavaScriptのコードは、React + Redux を使っています。 但し、まだ何も意味のある処理を書いていないので、このままだと 属性 id=”root” を持った要素内に …

WordPress

WordPress のテーマ、プラグイン開発のためのデバッグ設定

WordPress のテーマ、プラグイン開発のためのデバッグ設定や Tips について、ここにまとめていこうと思います。 目次1. wp-config.php の設定WP_DEBUGWP_DEBUG_ …

Web Programming

Webプログラミングのためのリンク集

Webプログラミングのためのリンク集です。

Web Programming

ソフトウェアにおける日付・時刻フォーマット

目次ソフトウェアにおける日付・時刻フォーマット参考情報ISO 8601RFC 5322RFC 7231Common Log Format ソフトウェアにおける日付・時刻フォーマット ソフトウェア(特に …