ES6
- チュートリアル
- リソース
- 重要なコンセプト
- ソーシャル
- その他
MithrilはES6とは完全に互換性があるES5で書かれています。ES6はよく使われる一般的なケースのために新しいシンタックスシュガーを導入するという方法でJavaScriptをアップデートしています。全ブラウザで完全にサポートされているわけではありませんし、アプリケーションを書くための必須要件となっているわけではありませんが、チームによっては使いたがるでしょう。
IEをサポートしない内部向けのアプリケーションなど、限られた環境の中では、追加のツールを導入しないで、ES6のサブセットを直接使って開発することもできます。しかし、ほとんどのユースケースではES6のコードをコンパイルしてES5にダウングレードするBabelのようなコンパイラーツールチェーンが必要になります。
セットアップ
ES6コンパイルツールチェーンをセットアップで一番簡単な方法はBabelを使うことです。
BabelはNode.jsをインストールすると維持でインストールされるnpmが必要です。npmがインストールされたら、プロジェクトフォルダを作り、次のコマンドを入力しましょう:
npm init -y
もしWebPackとBabelを同時に使いたいのであれば、次のセクションまで飛ばしてください。
Babelをスタンドアロンツールとして導入するには次のコマンドを実行します:
npm install babel-cli babel-preset-es2015 babel-plugin-transform-react-jsx --save-dev
.babelrc
ファイルを作成します:
{
"presets": ["es2015"],
"plugins": [
["transform-react-jsx", {
"pragma": "m"
}]
]
}
スタンドアロンツールとしてBabelを実行するには、次のように起動します:
babel src --out-dir bin --source-maps
WebPackとBabelを使用する
もしソースコードのバンドルにWebPackをすでに使っているのであれば、次のように設定することでBabelをWebPackに統合できます。
npm install babel-core babel-loader babel-preset-es2015 babel-plugin-transform-react-jsx --save-dev
.babelrc
ファイルを作成します:
{
"presets": ["es2015"],
"plugins": [
["transform-react-jsx", {
"pragma": "m"
}]
]
}
次に、webpack.config.js
というファイルを作成します
module.exports = {
entry: './src/index.js',
output: {
path: './bin',
filename: 'app.js',
},
module: {
loaders: [{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader'
}]
}
}
この設定ファイルでは、アプリケーションのエントリポイントがsrc/index.js
にあり、出力先がbin/app.js
にあることを想定しています。
バンドラーを実行するにはnpmスクリプトの設定を行います。package.json
ファイルを開き、"scripts"
以下に次のstart節を追加します:
{
"name": "my-project",
"scripts": {
"start": "webpack -d --watch"
}
}
これでバンドラーをコマンドラインツールから実行できるようになりました:
npm start
本番ビルド
ミニファイされたファイルを生成するには、package.json
を開き、build
という新しいnpmスクリプトの項目を追加します:
{
"name": "my-project",
"scripts": {
"start": "webpack -d --watch",
"build": "webpack -p"
}
}
本番環境ではフックを使ってスクリプトの本番ビルドを自動でビルドさせることができます。次のコードはHerokuを使うサンプルです:
{
"name": "my-project",
"scripts": {
"start": "webpack -d --watch",
"build": "webpack -p",
"heroku-postbuild": "webpack -p"
}
}
License: MIT. © Leo Horie.