UNPKG

build-easy

Version:
87 lines (81 loc) 4.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = getBabelConfig; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function getBabelConfig(buildConfig, isBrowser, moduleType) { const nodeVersion = buildConfig.nodeVersion, runtimeHelpers = buildConfig.runtimeHelpers, _buildConfig$babelCon = buildConfig.babelConfigTransform, babelConfigTransform = _buildConfig$babelCon === void 0 ? config => config : _buildConfig$babelCon, _buildConfig$extraBab = buildConfig.extraBabelPlugins, extraBabelPlugins = _buildConfig$extraBab === void 0 ? [] : _buildConfig$extraBab, _buildConfig$extraBab2 = buildConfig.extraBabelPresets, extraBabelPresets = _buildConfig$extraBab2 === void 0 ? [] : _buildConfig$extraBab2, frame = buildConfig.frame; const vue = frame === 'vue'; const react = frame === 'react'; const defaultEnvConfig = { exclude: ['transform-member-expression-literals', 'transform-reserved-words', 'transform-template-literals', 'transform-typeof-symbol', 'transform-unicode-regex', 'transform-sticky-regex', 'transform-new-target', 'transform-modules-umd', 'transform-modules-systemjs', 'transform-modules-amd', 'transform-literals', 'transform-regenerator'].filter(Boolean) }; // Setting this to false will preserve ES modules. const modules = moduleType === 'esm' ? false : 'cjs'; const babelConfig = { presets: [require.resolve('@build-easy/bundles/model/@babel/preset-typescript'), [require.resolve('@build-easy/bundles/model/@babel/preset-env'), _objectSpread({ targets: isBrowser ? { browsers: ['last 2 versions', 'IE 11'] } : { node: nodeVersion !== null && nodeVersion !== void 0 ? nodeVersion : 6 }, modules }, defaultEnvConfig)], /** * @desc Supports react */ isBrowser && react && require.resolve('@build-easy/bundles/model/@babel/preset-react'), ...extraBabelPresets].filter(Boolean), plugins: [ /** * @in * export default 1 * @out * Object.defineProperty(exports, "__esModule", { * value: true, * }); * * exports.default = 1; */ moduleType === 'cjs' && !isBrowser && [require.resolve('@build-easy/bundles/model/@babel/plugin-transform-modules-commonjs'), { lazy: true }], /** * @in * export * as v from "mod" * @out * export v from "mod" */ require.resolve('@build-easy/bundles/model/@babel/plugin-proposal-export-default-from'), /** * @desc * let a = do { * if (x > 10) { * ("big"); * } else { * ("small"); * } * }; * // is equivalent to: * let a = x > 10 ? "big" : "small"; */ require.resolve('@build-easy/bundles/model/@babel/plugin-proposal-do-expressions'), /** * @desc Supports vue jsx */ isBrowser && vue && require('@build-easy/bundles/model/@vue/babel-plugin-jsx'), runtimeHelpers && [require.resolve('@build-easy/bundles/model/@babel/plugin-transform-runtime'), { useESModules: isBrowser && moduleType === 'esm', version: require('@babel/runtime/package.json').version }], ...extraBabelPlugins].filter(Boolean) }; return babelConfigTransform(babelConfig); }