@zohodesk/client_build_tool
Version:
A CLI tool to build web applications and client libraries
54 lines (44 loc) • 1.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.babelWebConfig = babelWebConfig;
var _helperCompilationTargets = _interopRequireDefault(require("@babel/helper-compilation-targets"));
var _logger = require("../../logger");
var _getBabelPlugin = require("./getBabelPlugin");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/* eslint-disable no-use-before-define */
const supportedBrowserVersions = ['last 3 Chrome versions', 'last 3 Firefox versions', 'last 3 Edge versions', 'last 3 Safari versions'];
function customBabelPlugins(babelPlugins) {
return babelPlugins.map(p => p).filter(Boolean);
}
function babelWebConfig(options, mode) {
const {
plugins: babelPlugins,
browserList
} = options.babelCustomizations;
const {
enable: typeScriptEnable
} = options.typeScript;
return {
presets: typeScriptEnable ? [getBabelPresetEnvConfig(browserList, mode), require.resolve('@babel/preset-react'), require.resolve('@babel/preset-typescript')] : [getBabelPresetEnvConfig(browserList, mode), require.resolve('@babel/preset-react')],
plugins: customBabelPlugins(babelPlugins).concat((0, _getBabelPlugin.getBabelPlugin)(options, mode)).filter(Boolean)
};
}
function getBabelPresetEnvConfig(browserList, mode) {
if (mode === 'lib') {
return require.resolve('@babel/preset-env');
}
const browsers = browserList || supportedBrowserVersions;
(0, _logger.verboseLogger)('getTargets', (0, _helperCompilationTargets.default)({
browsers
}));
return [require.resolve('@babel/preset-env'), {
modules: false,
useBuiltIns: 'usage',
corejs: 3,
targets: {
browsers
}
}];
}