index.js (34 lines of code) (raw):

/* eslint-disable complexity */ const MIN_BABEL_VERSION = 7; const defaultAlwaysOnTransforms = ['@babel/plugin-proposal-nullish-coalescing-operator']; module.exports = function preset(api, opts) { api.assertVersion(MIN_BABEL_VERSION); const transformRuntime = opts.transformRuntime || false; const useBuiltIns = opts.useBuiltIns || false; const angularSupport = opts.angular || false; const typeScript = opts.typeScript || false; const corejs = opts.corejs || '2'; const reactConfig = opts.react; const envConfig = { useBuiltIns, include: angularSupport ? [...defaultAlwaysOnTransforms, 'transform-parameters'] // This fixes an issue with transforming Angular code like `constructor(...args)` : defaultAlwaysOnTransforms }; if (useBuiltIns) { envConfig.corejs = corejs; } return { presets: [ [require('@babel/preset-react'), reactConfig], [require('@babel/preset-env'), envConfig], typeScript ? [require('@babel/preset-typescript'), {allowDeclareFields: true}] : null ].filter(it => !!it), plugins: [ require('@babel/plugin-transform-strict-mode'), // Optional transformations angularSupport ? require('babel-plugin-angularjs-annotate') : null, transformRuntime ? require('@babel/plugin-transform-runtime') : null ].filter(it => !!it) }; };