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)
This commit is contained in:
Jason Miller 2020-06-19 13:27:03 -04:00 committed by GitHub
parent afafa6d213
commit 5f8ea9ee7e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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 || [],