rsnext/docs/advanced-features/customizing-babel-config.md
Luis Alvarez D d1fdd2bbf8 Add descriptions to documentation pages (#9901)
* Added descriptions

* Added descriptions to API Reference

* Added descriptions to API Routes

* Added descriptions to basic features

* Added descriptions to the routing docs

* Update exportPathMap.md

Co-authored-by: Joe Haddad <timer150@gmail.com>
2020-01-03 13:16:51 -05:00

1.7 KiB

description
Extend the babel preset added by Next.js with your own configs.

Customizing Babel Config

Examples

Next.js includes the next/babel preset to your app, it includes everything needed to compile React applications and server-side code. But if you want to extend the default Babel configs, it's also possible.

To start, you only need to define a .babelrc file at the top of your app, if such file is found, we're going to consider it the source of truth, therefore it needs to define what Next.js needs as well, which is the next/babel preset.

Here's an example .babelrc file:

{
  "presets": ["next/babel"],
  "plugins": []
}

The next/babel presets includes:

  • preset-env
  • preset-react
  • preset-typescript
  • plugin-proposal-class-properties
  • plugin-proposal-object-rest-spread
  • plugin-transform-runtime
  • styled-jsx

These presets/plugins should not be added to your custom .babelrc. Instead, you can configure them on the next/babel preset, like so:

{
  "presets": [
    [
      "next/babel",
      {
        "preset-env": {},
        "transform-runtime": {},
        "styled-jsx": {},
        "class-properties": {}
      }
    ]
  ],
  "plugins": []
}

To learn more about the available options for each config, visit their documentation site.

Next.js uses the current Node.js version for server-side compilations.

The modules option on "preset-env" should be kept to false, otherwise webpack code splitting is disabled.