@mapbox/batfish
Version:
The React-powered static-site generator you didn't know you wanted
51 lines (39 loc) • 1.47 kB
JavaScript
//
;
const constants = require('./constants');
function createBabelConfig(
batfishConfig ,
options
= {}
)
{
const target = options.target || constants.TARGET_BROWSER;
const presetEnvOptions =
target === constants.TARGET_NODE
? { useBuiltIns: true, targets: { node: 'current' } }
: batfishConfig.babelPresetEnvOptions || {};
const presets = [
[require.resolve('babel-preset-env'), presetEnvOptions],
require.resolve('babel-preset-react')
].concat(batfishConfig.babelPresets);
const plugins = [
require.resolve('babel-plugin-syntax-dynamic-import'),
require.resolve('babel-plugin-transform-class-properties'),
[
require.resolve('@mapbox/babel-plugin-transform-jsxtreme-markdown'),
{
packageName: '@mapbox/batfish/modules/md',
remarkPlugins: batfishConfig.jsxtremeMarkdownOptions.remarkPlugins,
rehypePlugins: batfishConfig.jsxtremeMarkdownOptions.rehypePlugins
}
]
].concat(batfishConfig.babelPlugins);
if (batfishConfig.production) {
plugins.push('babel-plugin-transform-react-remove-prop-types');
} else {
plugins.push(require.resolve('babel-plugin-transform-react-jsx-source'));
plugins.push(require.resolve('babel-plugin-transform-react-jsx-self'));
}
return { presets, plugins };
}
module.exports = createBabelConfig;