Configuring Babel

Babel is automatically configured for all .js and .jsx files via the babel-loader with sensible defaults (e.g. with the @babel/preset-env and @babel/preset-react if requested).

Babel は適切なデフォルト値 (例えば、@babel/preset-env および @babel/preset-react を要求された場合) を使用して、thebabel-loader を介してすべての .js および .jsx ファイルに対して自動的に構成されます。

Need to extend the Babel configuration further? The easiest way is via configureBabel():

Babel 構成をさらに拡張する必要がありますか?最も簡単な方法は、configureBabel() を使用することです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// webpack.config.js
// ...

Encore
    // ...

    .configureBabel(function(babelConfig) {
        // add additional presets
        babelConfig.presets.push('@babel/preset-flow');

        // no plugins are added by default, but you can add some
        babelConfig.plugins.push('styled-jsx/babel');
    }, {
        // node_modules is not processed through Babel by default
        // but you can allow some specific modules to be processed
        includeNodeModules: ['foundation-sites'],

        // or completely control the exclude rule (note that you
        // can't use both "includeNodeModules" and "exclude" at
        // the same time)
        exclude: /bower_components/
    })
;

Configuring Browser Targets

The @babel/preset-env preset rewrites your JavaScript so that the final syntax will work in whatever browsers you want. To configure the browsers that you need to support, see PostCSS and autoprefixing (postcss-loader).

@babel/preset-env プリセットは JavaScript を書き換えて、最終的な構文がどのブラウザーでも機能するようにします。サポートする必要があるブラウザーを構成するには、PostCSS と自動接頭辞 (postcss-loader) を参照してください。

After changing your "browserslist" config, you will need to manually remove the babel cache directory:

「browserslist」設定を変更した後、babelcache ディレクトリを手動で削除する必要があります。
1
2
# On Unix run this command. On Windows, clear this directory manually
$ rm -rf node_modules/.cache/babel-loader/

Creating a .babelrc File

Instead of calling configureBabel(), you could create a .babelrc file at the root of your project. This is a more "standard" way of configuring Babel, but it has a downside: as soon as a .babelrc file is present, Encore can no longer add any Babel configuration for you. For example, if you call Encore.enableReactPreset(), the react preset will not automatically be added to Babel: you must add it yourself in .babelrc.

configureBabel() を呼び出す代わりに、プロジェクトのルートに .babelrc ファイルを作成できます。これはより「標準的な」Babel 構成方法ですが、欠点があります。.babelrc ファイルが存在するとすぐに、Encore は Babel 構成を追加できなくなります。たとえば、Encore.enableReactPreset() を呼び出した場合、react プリセットは自動的に Babel に追加されません。自分で .babelrc に追加する必要があります。

As soon as a .babelrc file is present, it will take priority over the Babel configuration added by Encore.

.babelrc ファイルが存在するとすぐに、Encore によって追加された Babel 構成よりも優先されます。