Laravel Mix (5.5) で ES6 async/await を変換できるようにするには

Laravel 5.5 のアセットコンパイラである Laravel Mix (Elixir から名前が変わった) のフロントエンドで async/await が使いたかったので設定しました。

概要

Mix の裏側ではバンドラーの Webpack と JavaScript コンパイラーである Babel が動いています。

Webpack の設定変更は webpack.mix.js でできますが、今回は Babel の設定だけで実現できるので webpack.mix.js の編集は不要です。

.babelrc を追加

プロジェクトルートに .babelrc を配置するとその設定を読み込んで Babel を実行してくれます。

今の Babel はコンパイルする機能の ON/OFF をプリセットで行うようになっているので、 presets にプリセットを指定します。

前は ["es2015", "stage-3"] とやっていましたが、面倒なので babel-preset-env に乗り換えました。

{
  "presets": [
    ["env", {
      "targets": {
        "browsers": ["last 2 versions", "safari >= 7"]
      }
    }]
  ]
}

babel-preset-env のインストール

.babelrc に書いた babel-preset-env を使用するため、 npm でインストールしておきます。

npm i -D babel-preset-env

完了

あとは npm run dev するだけでコンパイルできちゃいます。

kenzauros