From 5f8ea9ee7e25bb99db6cb2d8401392ea21f1c96f Mon Sep 17 00:00:00 2001 From: Jason Miller Date: Fri, 19 Jun 2020 13:27:03 -0400 Subject: [PATCH] Use DI to prevent multiple copies of @babel/core (#664) * Use DI to prevent multiple copies of @babel/core Fixes #657. * Actually fix it (haha) --- src/lib/babel-custom.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/lib/babel-custom.js b/src/lib/babel-custom.js index a7fad7a..68c7472 100644 --- a/src/lib/babel-custom.js +++ b/src/lib/babel-custom.js @@ -1,4 +1,3 @@ -import { createConfigItem } from '@babel/core'; import { createBabelInputPluginFactory } from '@rollup/plugin-babel'; import merge from 'lodash.merge'; import transformFastRest from './transform-fast-rest'; @@ -8,7 +7,7 @@ const ESMODULES_TARGET = { esmodules: true, }; -const mergeConfigItems = (type, ...configItemsToMerge) => { +const mergeConfigItems = (babel, type, ...configItemsToMerge) => { const mergedItems = []; configItemsToMerge.forEach(configItemToMerge => { @@ -24,7 +23,7 @@ const mergeConfigItems = (type, ...configItemsToMerge) => { return; } - mergedItems[itemToMergeWithIndex] = createConfigItem( + mergedItems[itemToMergeWithIndex] = babel.createConfigItem( [ mergedItems[itemToMergeWithIndex].file.resolved, merge(mergedItems[itemToMergeWithIndex].options, item.options), @@ -39,11 +38,11 @@ const mergeConfigItems = (type, ...configItemsToMerge) => { return mergedItems; }; -const createConfigItems = (type, items) => { +const createConfigItems = (babel, type, items) => { return items.map(item => { let { name, value, ...options } = item; value = value || [require.resolve(name), options]; - return createConfigItem(value, { type }); + return babel.createConfigItem(value, { type }); }); }; @@ -68,6 +67,7 @@ export default () => { const isNodeTarget = targets && targets.node != null; const defaultPlugins = createConfigItems( + babelCore, 'plugin', [ { @@ -129,7 +129,7 @@ export default () => { if (envIdx !== -1) { const preset = babelOptions.presets[envIdx]; - babelOptions.presets[envIdx] = createConfigItem( + babelOptions.presets[envIdx] = babelCore.createConfigItem( [ require.resolve(environmentPreset), Object.assign( @@ -156,7 +156,7 @@ export default () => { }, ); } else { - babelOptions.presets = createConfigItems('preset', [ + babelOptions.presets = createConfigItems(babelCore, 'preset', [ { name: environmentPreset, targets: customOptions.modern @@ -175,6 +175,7 @@ export default () => { // Merge babelrc & our plugins together babelOptions.plugins = mergeConfigItems( + babelCore, 'plugin', defaultPlugins, babelOptions.plugins || [],