Nuxt/packages/babel-preset-app
2019-07-16 14:57:05 +04:30
..
src fix: support babel corejs config for modern mode (#6070) 2019-07-16 14:57:05 +04:30
package.json chore(deps): update all non-major dependencies (#6037) 2019-07-10 14:06:25 +04:30
README.md chore(babel-preset-app): fix typo in babel-preset readme (#5897) 2019-06-09 13:36:36 +04:30

@nuxt/babel-preset-app

Default babel preset for nuxt

Usage

This is the default preset used by Nuxt, which is mainly a wrapper around the @babel/preset-env preset. It also optionally uses the @vue/babel-preset-jsx preset as well as @babel/plugin-syntax-dynamic-import, @babel/plugin-proposal-decorators, @babel/plugin-proposal-class-properties, @babel/plugin-transform-runtime. Furthermore the preset is adding polyfills.

Note: Since core-js@2 and core-js@3 are both supported from Babel 7.4.0, we recommend directly adding core-js and setting the version via the corejs option.

yarn add --dev core-js@3 @babel/runtime-corejs3

# or

yarn add --dev core-js@2 @babel/runtime-corejs2

Usually, no additional configuration is required. If needed though, there is an option to fine-tune the preset's behavior. Just add the following to nuxt.config.js:

babel: {
  presets({ isServer }) {
    return [
      [ "@nuxt/babel-preset-app", options ]
    ]
  }
}

options is an object with parameters, for example:

const options = {
  useBuiltIns: "entry"
}

Below is a list of all available parameters:

Options

There are detailed docs for the parameters of '@babel/preset-env'.

Example 1. Change targets for server and client respectively

export default {
  build: {
    babel: {
      presets({ isServer }) {
        return [
          [
            "@nuxt/babel-preset-app",
            {
              targets: isServer
                ? { node: "current" }
                : { browsers: ["last 2 versions"], ie: 11 }
            }
          ]
        ]
      }
    }
  }
}

Example 2. Use core-js@3

NOTE: Make sure that all dependencies have been upgraded to use core-js@3. If core-js@2 and core-js@3 are both dependent, babel may resolve incorrect core-js package which is hoisted by yarn/npm.

yarn add --dev core-js@2 @babel/runtime-corejs2
export default {
  build: {
    babel: {
      presets({ isServer }) {
        return [
          [
            require.resolve('@nuxt/babel-preset-app'),
            {
              buildTarget: isServer ? 'server' : 'client',
              corejs: { version: 3 }
            }
          ]
        ]
      }
    }
  }
}