@nuxt/babel-preset-app
Default babel preset for nuxt
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-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(env, [ preset, options ]) {
return [
[ "@nuxt/babel-preset-app", options ]
]
}
}
env
is an object which contains envName
(server
, client
, modern
) and all nuxtEnv
properties (isDev
, isServer
, isClient
, isModern
, isLegacy
)
preset
is the preset package name @nuxt/babel-preset-app
options
is an object with parameters, for example:
const options = {
useBuiltIns: "entry"
}
Below is a list of all available options
parameters:
@babel/preset-env
@babel/preset-env
parameterfalse
- '@babel/preset-env' parametermodern
- '@babel/preset-env' parameterfalse
- '@babel/preset-env' parameter and also sets loose=true
for @babel/plugin-proposal-class-properties
false
- '@babel/preset-env' parametercore-js@2: ['es6.array.iterator','es6.promise','es6.object.assign','es7.promise.finally']
, core-js@3: ['es.array.iterator','es.promise','es.object.assign','es.promise.finally']
, more in the corresponding repository"usage"
- '@babel/preset-env' parameter{ version: 2 }
- '@babel/preset-env' parameterThere are detailed docs for the parameters of '@babel/preset-env'.
export default {
build: {
babel: {
presets({ envName }) {
const envTargets = {
client: { browsers: ["last 2 versions"], ie: 11 },
server: { node: "current" },
}
return [
[
"@nuxt/babel-preset-app",
{
targets: envTargets[envName]
}
]
]
}
}
}
}
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@3 @babel/runtime-corejs3
export default {
build: {
babel: {
// envName: server, client, modern
presets({ envName }) {
return [
[
'@nuxt/babel-preset-app',
{
corejs: { version: 3 }
}
]
]
}
}
}
}