Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
114 lines (77 sloc) 2.69 KB
id title
Configure Babel

Babel can be configured! Many other tools have similar configs: ESLint (.eslintrc), Prettier (.prettierrc).

All Babel API options are allowed. However, if the option requires JavaScript, you may want to use a JavaScript configuration file.

What's your use case?

  • You want to programmatically create the configuration?
  • You want to compile node_modules?

babel.config.js is for you!

  • You have a static configuration that only applies to your simple single package?

.babelrc is for you!

  • The Guy Fieri is your hero?

We recommend to use the babel.config.js format. Babel itself is using it.


Create a file called babel.config.js with the following content at the root of your project (where the package.json is).

module.exports = function (api) {

  const presets = [ ... ];
  const plugins = [ ... ];

  return {

Check out the babel.config.js documentation to see more configuration options.


Create a file called .babelrc with the following content in your project.

  "presets": [...],
  "plugins": [...]

Check out the .babelrc documentation to see more configuration options.


Alternatively, you can choose to specify your .babelrc config from within package.json using the babel key like so:

  "name": "my-package",
  "version": "1.0.0",
  "babel": {
    "presets": [ ... ],
    "plugins": [ ... ],


The configuration is the same as .babelrc, but you can write it using JavaScript.

const presets = [ ... ];
const plugins = [ ... ];

module.exports = { presets, plugins };

You are allowed to access any Node.js APIs, for example a dynamic configuration based on the process environment:

const presets = [ ... ];
const plugins = [ ... ];

if (process.env["ENV"] === "prod") {

module.exports = { presets, plugins };

Using the CLI (@babel/cli)

babel --plugins @babel/plugin-transform-arrow-functions script.js

Check out the babel-cli documentation to see more configuration options.

Using the API (@babel/core)

require("@babel/core").transform("code", {
  plugins: ["@babel/plugin-transform-arrow-functions"]

Check out the babel-core documentation to see more configuration options.

You can’t perform that action at this time.