From 59c0df27211e33c570a424d994a4ef694eb9ed12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hu=C3=A1ng=20J=C3=B9nli=C3=A0ng?= Date: Thu, 30 Jul 2020 09:20:17 -0400 Subject: [PATCH] refactor: get rollupVersion from this.meta in options hook --- packages/babel/src/index.js | 38 +++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/packages/babel/src/index.js b/packages/babel/src/index.js index 5143d491f..10dff1bbc 100644 --- a/packages/babel/src/index.js +++ b/packages/babel/src/index.js @@ -1,5 +1,4 @@ import * as babel from '@babel/core'; -import { VERSION } from "rollup"; import { createFilter } from '@rollup/pluginutils'; import { BUNDLED, HELPERS } from './constants'; @@ -30,7 +29,7 @@ const unpackOptions = ({ }; }; -const unpackInputPluginOptions = ({ skipPreflightCheck = false, ...rest }) => { +const unpackInputPluginOptions = ({ skipPreflightCheck = false, ...rest }, rollupVersion) => { if (!rest.babelHelpers) { // eslint-disable-next-line no-console console.warn( @@ -47,7 +46,7 @@ const unpackInputPluginOptions = ({ skipPreflightCheck = false, ...rest }) => { supportsDynamicImport: true, supportsTopLevelAwait: true, // todo: remove version checks for 1.20 - 1.25 when we bump peer deps - supportsExportNamespaceFrom: !VERSION.match(/^1\.2[0-5]\./), + supportsExportNamespaceFrom: !rollupVersion.match(/^1\.2[0-5]\./), ...rest.caller } }); @@ -93,22 +92,29 @@ function createBabelInputPluginFactory(customCallback = returnObject) { overrides ); - const { - exclude, - extensions, - babelHelpers, - include, - skipPreflightCheck, - ...babelOptions - } = unpackInputPluginOptions(pluginOptionsWithOverrides); - - const extensionRegExp = new RegExp(`(${extensions.map(escapeRegExpCharacters).join('|')})$`); - const includeExcludeFilter = createFilter(include, exclude); - const filter = (id) => extensionRegExp.test(id) && includeExcludeFilter(id); - + let babelHelpers, babelOptions, filter, skipPreflightCheck; return { name: 'babel', + options() { + let exclude, include, extensions; + + ({ + exclude, + extensions, + babelHelpers, + include, + skipPreflightCheck, + ...babelOptions + } = unpackInputPluginOptions(pluginOptionsWithOverrides, this.meta.rollupVersion)); + + const extensionRegExp = new RegExp(`(${extensions.map(escapeRegExpCharacters).join('|')})$`); + const includeExcludeFilter = createFilter(include, exclude); + filter = (id) => extensionRegExp.test(id) && includeExcludeFilter(id); + + return null; + }, + resolveId(id) { if (id !== HELPERS) { return null;