Babel

参考:

Babel [Official]

babel/babel: Babel is a compiler for writing next generation JavaScript – GitHub

概要

参考:

Babel によるトランスパイルの挙動について理解する – Qiita

What is Babel? | Babel [Official]

導入

参考:

Babel で始める!モダン JavaScript 開発 | HTML5Experts.jp

使い方

参考:

ES6 をコンパイル | BarikanBlog

Babel の基本的な使い方 – Qiita

Babel を使おう – Qiita

Babel7 で JavaScript をトランスパイルしてみた。| IT 二刀流

Babel CLI (@babel/cli、旧 babel-cli)

参考:

@babel/cli | Babel [Official]

babel/packages/babel-cli at master · babel/babel – GitHub

@babel/cli – npm

Babel を使って現代的 JavaScript を始める。| Ginpen.com

Babel CLI (babel コマンド) の使い方 | maesblog

babel のコマンドライン実行 es6 to es5 – Qiita

Babel を使おう – Qiita

はじめての Babel (babel-cli 使用) | Syntax Error.

babel で ES6 を導入する最短手順 | ブロックチェーンエンジニアとして生きる

babel-node (@babel/node)

参考:

@babel/node | Babel [Official]

@babel/node – npm

世界一シンプルなサーバサイド node で ES6 の始め方 – Qiita

babel で ES6 を導入する最短手順 | ブロックチェーンエンジニアとして生きる

babel を使って ECMAScript 2015 (ES6) へ対応する | ブロックチェーンエンジニアのブログ (daiki-sekiguchi.com)

babel7 で @babel/node (旧 babel-node) を使う | mottox2 blog

nodejs で ES6 を使うときの babel メモ – Qiita

Node.js + Babel で ECMAScript6 を使ってみる | たけぞう瀕死ブログ

The minimal Node.js with Babel Setup | RWieruch

Using babel 7 with node | HackerNoon.com

import doesn’t work in babel-node interactively · Issue #1264 · babel/babel – GitHub

babel-node ES6 imports fail in REPL · Issue #1488 · babel/babel – GitHub

Modules aren’t supported in the REPL – Stack Overflow

設定ファイル

  • .babelrc
  • babel.config.js
  • .babelrc.js

参考:

Babel の設定を見直すための逆引きガイド | mille-feuille code

Configure Babel | Babel [Official]

Config Files | Babel [Official]

Using .babelrc.js today | FatFisz’s homepage

Are you open to allowing .babelrc.js? · Issue #4630 · babel/babel – GitHub

Webpack で使う

参考:

webpack + Babel 入門 | ぺーぺー SE のブログ

webpack.config.babel.js

参考:

Babel7 で webpack.config.babel.js を使う – Qiita

Babel 7 not being executed on webpack.config.babel.js · Issue #5960 · webpack/webpack – GitHub

@babel/register (旧 babel-register)

参考:

@babel/register | Babel [Official]

babel/packages/babel-register at master · babel/babel – GitHub

babel-register | 橋本商会

Node.js アプリで Babel の ES2015 を利用する (babel-register) – Qiita

ES2015 で書かれた Node.js をデーモン化する | 30歳からのプログラミング

‘babel-core/register’ vs ‘babel-register’ – Stack Overflow

Babel7 で webpack.config.babel.js を使う – Qiita

@babel/plugin-transform-runtime (旧 babel-runtime)

ランタイムを使った ES6 のトランスパイルを行う。トランスパイル時に @babel/plugin-transform-runtime を使い、実行時に @babel/runtime を使う。

参考:

@babel/plugin-transform-runtime | Babel [Official]

@babel/plugin-transform-runtime – npm

webpack で babel-runtime を使おうとしてハマったメモ – Qiita

babel-polyfill と babel-runtime の使い分けに迷ったので調べた – Qiita

webpack で babel 際は node_modules を exclude し忘れるべからず – Qiita

@babel/polyfill (旧 babel-polyfill)

*** DEPRECATED ***

Babel 7.4 で廃止となった。core-js を直接使う。

$ yarn remove @babel/polyfill
$ yarn add core-js@3

参考:

@babel/polyfill | Babel [Official]

@babel/polyfill – npm

babel/packages/babel-polyfill at master · babel/babel – GitHub

ブラウザ向けに Polyfill ライブラリを有効化する | deadwood

Babel の設定を見直すための逆引きガイド | mille-feuille code

babel-preset-env と babel-polyfill と babel-plugin-transform-runtime | 欅樹雑記

babel-polyfill によって使用可能になる処理一覧 – Qiita

How do I install the babel-polyfill library? – Stack Overflow

babel-preset-env + babel-polyfill documentation is misleading · Issue #1660 · babel/website – GitHub

Best way to include babel-polyfill? – ShakaCode Forum

What is the best way to include babel polyfill using multiple entry points – Stack Overflow

core-js

ECMAScript のプロポーザルを含めたポリフィルを提供するライブラリ

  • core-jsグローバルを書き換えるポリフィル
  • core-js-pureグローバルを書き換えないポリフィル
  • core-js-bundlecore-js を bundle したもの

参考:

zloirock/core-js: Standard Library – GitHub

core-js – npm

Babel 7.4 で非推奨になった babel/polyfill の代替手段と設定方法 | mille-feuille code

babel-polyfill / babel-runtime の代わりに core-js を直接使うのはアリかナシか – Qiita

Babel 7.4.0 と core-js 3.0.0 リリース、Chrome 74 beta | JSer.info

core-js-compat

ブラウザなどの環境の指定から必要なポリフィルをリストアップするための互換性データを提供するライブラリ。

参考:

core-js/packages/core-js-compat at master · zloirock/core-js – GitHub

core-js-compat – npm

core-js-builder

ブラウザなどの環境及び除外するポリフィルのリストを指定してカスタマイズしたポリフィルを構築するためのライブラリ。

参考:

core-js/packages/core-js-builder at master · zloirock/core-js – GitHub

core-js-builder – npm

ES6

参考:

ECMAScript 6 compatibility table | kangax

@babel/preset-env (旧 babel-preset-env)

参考:

@babel/preset-env – npm

babel/packages/babel-preset-env at master · babel/babel – GitHub

babel-preset-env | Babel [Official]

babel-preset-env を簡単にさわってみた。- Qiita

babel-preset-env で環境に合わせて JavaScript をトランスパイルする | キーポイント株式会社 開発日誌

babel-preset-env@2.0 を試した トランスパイル環境をスケールさせていく | mediba Creator × Engineer Blog

babel-preset-env を試す | アカベコマイリ

Babel & preset-env | codeburst

useBuiltIns

entry モード

エントリーファイル毎に一度だけポリフィルを含める。(二度以上インポートすると例外が発生するので注意。) 環境の指定に応じて必要なモジュールが同定されて、個別のモジュールのインポートに置き換えられる。

useBuiltIns: 'entry'
usage モード

各モジュール内で必要に応じて個別のモジュールが自動的にインポートされる。バンドラーの機能によってモジュールの重複は取り除かれる。

useBuiltIns: 'usage'
ポリフィルを自動処理しない

ポリフィルは自動的に追加されず、entry 指定時のように個別のモジュールにも展開されない。(デフォルト)

useBuiltIns: false

参考:

Babel7.x 時代の polyfill の設定方法と useBuiltIns の仕組み | mille-feuille code

babel-preset-env 2.0 の useBuiltIns を使って polyfill する – Qiita

useBuiltIns – @babel/preset-env | Babel [Official]

corejs

corejs使用する core-js のバージョンを指定する

  • corejs: 2
  • corejs: 3
  • corejs: { version: 2, proposals: true }
  • corejs: { version: 3, proposals: true }

現時点では core-js のバージョンとして 2 もしくは 3 が指定できる。proposal は ECMAScript のプロポーザルに相当するポリフィルを使用するかどうかを指定する。

package.jsoncore-js@3 を追加する。

$ yarn add core-js@3

core-js@3 のポリフィルを使用し、プロポーザルのポリフィルを含める。

corejs: { version: 3, proposals: true }

参考:

corejs – @babel/preset-env | Babel [Official]

useBuiltIns: usage with corejs: 3 – core-js/2019-03-19-core-js-3-babel-and-a-look-into-the-future.md at master · zloirock/core-js – GitHub

browsers

参考:

last 2 versions – @jamiebuilds

We should discourage the use of “last 2 versions” in babel-preset-env · Issue #7789 · babel/babel – GitHub

modules

参考:

babel-preset-env の使い方 (babel-preset-es2015 からの移行) | dackdive’s blog

.babelrc {module: false} and older browsers · Issue #649 · vuejs-templates/webpack – GitHub

forceAllTransforms

参考:

forceAllTransforms – @babel/preset-env | Babel [Official]

Add forceAllTransforms option and deprecate Uglify target by existentialism · Pull Request #264 · babel/babel-preset-env – GitHub

uglify-es

参考:

uglify-es – npm

mishoo/UglifyJS2 at harmony – GitHub

uglify-es での「ES6 対応」の意味 – Qiita

babel-preset-es2015 [DEPRECATED]

参考:

babel-preset-env の使い方 (babel-preset-es2015 からの移行) | dackdive’s blog

Webpack + Babel: Couldn’t find preset “es2015” relative to directory – Stack Overflow

Babel 7

プラグインなどの関連パッケージ名が babel-* から @babel/* に変更された。

プリセットは @babel/preset-env を使う。

参考:

ES6 からのトランスパイルするときの Babel 7 対応 | ポン酢まいるど開発記

babel7 での stage-x の定義を知る – Qiita

次のリリースである Babel7 の主な変更点まとめ | 技術探し

babelrcRoots

参考:

babelrcRoots – Options | Babel [Official]

babelrc

参考:

babelrc – Options | Babel [Official]

互換性

参考:

npm 開発で脱 Babel してみる | アカベコマイリ

babel-plugin-source-map-support

参考:

chocolateboy/babel-plugin-source-map-support: A Babel plugin which automatically makes stack traces source-map aware – GitHub

babel-plugin-source-map-support – npm

@babel/plugin-syntax-dynamic-import

参考:

@babel/plugin-syntax-dynamic-import | Babel [Official]

@babel/plugin-syntax-dynamic-import – npm

babel/packages/babel-plugin-syntax-dynamic-import at master · babel/babel – GitHub

Webpack で Dynamic import を行ってみる – Qiita

@babel/plugin-syntax-export-default-from

参考:

@babel/plugin-syntax-export-default-from – npm

‘export default from’ can not be correctly compiled · Issue #7293 · babel/babel – GitHub

@babel/plugin-proposal-object-rest-spread

参考:

@babel/plugin-proposal-object-rest-spread | Babel [Official]

Unexpected token … ( spread operator ) · Issue #9675 · babel/babel – GitHub

unexpected token (rest spread operator) · Issue #170 · babel/babel-loader – GitHub

@babel/plugin-transform-spread

参考:

@babel/plugin-transform-spread | Babel [Official]

polyfill のエラー

参考:

IE11 で babel-polyfill が入ってなくて画面が真っ白になる | なんか書いていこうぜー.com

‘Symbol’ is undefined in IE after using babel – Stack Overflow

記事をシェアする:
タグ:

コメントを残す

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

Protected by reCAPTCHA