@babel/preset-react
このプリセットには、常に以下のプラグインが含まれています。
- @babel/plugin-syntax-jsx
- @babel/plugin-transform-react-jsx
- @babel/plugin-transform-react-display-name
そして、`development` オプションを有効にすると
Classic ランタイムでは以下が追加されます
Automatic ランタイム ( `v7.9.0` 以降) では、 `development` オプションが有効になっている場合、これらのプラグインの機能が自動的に追加されます。 Automatic ランタイムが有効になっている場合、@babel/plugin-transform-react-jsx-self または @babel/plugin-transform-react-jsx-source を追加するとエラーが発生します。
注: v7 では Flow 構文のサポートは有効ではなくなりました。 Flow を使用するには、Flow プリセットを追加する必要があります。
インストール
React の 入門ページもご覧ください。
- npm
- Yarn
- pnpm
npm install --save-dev @babel/preset-react
yarn add --dev @babel/preset-react
pnpm add --save-dev @babel/preset-react
使用方法
設定ファイルを使用する場合 (推奨)
オプションなし
{
"presets": ["@babel/preset-react"]
}
オプションあり
{
"presets": [
[
"@babel/preset-react",
{
"pragma": "dom", // default pragma is React.createElement (only in classic runtime)
"pragmaFrag": "DomFrag", // default is React.Fragment (only in classic runtime)
"throwIfNamespace": false, // defaults to true
"runtime": "classic" // defaults to classic
// "importSource": "custom-jsx-library" // defaults to react (only in automatic runtime)
}
]
]
}
CLI 経由
babel --presets @babel/preset-react script.js
Node API 経由
require("@babel/core").transformSync("code", {
presets: ["@babel/preset-react"],
});
オプション
両ランタイム
`runtime`
`classic` | `automatic`、デフォルトは `classic`
追加バージョン: `v7.9.0`
注: デフォルトのランタイムは Babel 8 で `automatic` に切り替わります。
使用するランタイムを決定します。
`automatic` は JSX がトランスパイルする関数を自動インポートします。 `classic` は何も自動インポートしません。
`development`
`boolean`、デフォルトは `false`。
`__source` や `__self` を追加するなど、開発に固有の動作を切り替えます。
これは、env オプション設定または js 設定ファイルと組み合わせると便利です。
`throwIfNamespace`
`boolean`、デフォルトは `true`。
XML 名前空間付きタグ名を使用した場合にエラーをスローするかどうかを切り替えます。 例えば
JSX の仕様ではこれが許可されていますが、React の JSX は現在これをサポートしていないため、デフォルトでは無効になっています。
`pure`
`boolean`、デフォルトは `true`。
`@babel/plugin-transform-react-pure-annotations` を有効にします。これは、ツリーシェイキングのためにトップレベルの React メソッド呼び出しを pure としてマークします。
React Automatic ランタイム
`importSource`
`string`、デフォルトは `react`。
追加バージョン: `v7.9.0`
関数をインポートする際のインポートソースを置き換えます。
React Classic ランタイム
`pragma`
`string`、デフォルトは `React.createElement`。
JSX 式をコンパイルするときに使用される関数を置き換えます。修飾名 (例: `React.createElement`) または識別子 (例: `createElement`) である必要があります。
`pragmaFrag`
`string`、デフォルトは `React.Fragment`。
JSX フラグメントをコンパイルするときに使用されるコンポーネントを置き換えます。有効な JSX タグ名である必要があります。
`useBuiltIns`
`boolean`、デフォルトは `false`。
このオプションは Babel 8 で削除されます。モダンブラウザをターゲットにしている場合は、`useBuiltIns` を `true` に設定してください。
動作をポリフィルする代わりに、ネイティブの組み込み関数を使用します。
`useSpread`
`boolean`、デフォルトは `false`。
追加バージョン: `v7.7.0`
このオプションは Babel 8 で削除されます。モダンブラウザをターゲットにしている場合は、 `useSpread` を `true` に設定してください。
props を展開する場合、Babel の extend ヘルパーまたは `Object.assign` の代わりに、スプレッド要素を含むインラインオブジェクトを直接使用します。
:::
babel.config.js
module.exports = {
presets: [
[
"@babel/preset-react",
{
development: process.env.BABEL_ENV === "development",
},
],
],
};
babel.config.json
注: `env` オプションは近日中に廃止される予定です。
{
"presets": ["@babel/preset-react"],
"env": {
"development": {
"presets": [["@babel/preset-react", { "development": true }]]
}
}
}
プリセットオプションの設定について詳しくは、こちらをご覧ください。