UNPKG

@escaladesports/babel-preset

Version:

Escalade Sport's babel preset

69 lines (64 loc) 2.45 kB
'use strict' const { declare } = require(`@babel/helper-plugin-utils`) module.exports = declare((api, options) => { // declare function allows better error handling - https://babeljs.io/docs/en/next/babel-helper-plugin-utils.html const { targets, version, modules, } = options api.assertVersion(version || 7) // forces babel version const debug = typeof options.debug === `boolean` ? options.debug : false // debug mode for @babel/preset-env const development = typeof options.development === `boolean` ? options.development : api.cache.using(() => process.env.NODE_ENV === `development`) // dev mode for @babel/preset-react return { presets: [ [require(`@babel/preset-env`), { debug, targets: targets || `> 0.25%, not dead`, modules: modules === false ? false : `auto`, useBuiltIns: `usage`, corejs: { version: 3, proposals: true }, }], [require(`@babel/preset-react`), { development }], ], // presets that include most of the plugins needed plugins: [ require(`@babel/plugin-transform-runtime`), require(`@babel/plugin-proposal-function-bind`), require(`@babel/plugin-proposal-export-default-from`), require(`@babel/plugin-proposal-logical-assignment-operators`), [require(`@babel/plugin-proposal-optional-chaining`), { loose: false, }], [require(`@babel/plugin-proposal-pipeline-operator`), { proposal: `minimal`, }], [require(`@babel/plugin-proposal-nullish-coalescing-operator`), { loose: false, }], require(`@babel/plugin-proposal-do-expressions`), [require(`@babel/plugin-proposal-decorators`), { legacy: true, }], require(`@babel/plugin-proposal-function-sent`), require(`@babel/plugin-proposal-export-namespace-from`), require(`@babel/plugin-proposal-numeric-separator`), require(`@babel/plugin-proposal-throw-expressions`), require(`@babel/plugin-syntax-dynamic-import`), require(`@babel/plugin-syntax-import-meta`), [require(`@babel/plugin-proposal-class-properties`), { loose: false, }], require(`@babel/plugin-proposal-json-strings`), require(`@babel/plugin-proposal-object-rest-spread`), ].concat( /** * Don't include babel-plugin-dynamic-import-node for Gatsby sites. This * would make builds fail due to conflicts with @loadable/babel-plugin. */ options.gatsby ? [] : [require(`babel-plugin-dynamic-import-node`)], ), // plugins not included in presets } })