From 1bd586aad7fadeb4bdc6ed0f1f9d94040889e938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Sat, 23 Jun 2018 22:15:37 +0200 Subject: [PATCH] Cache preflight check results per plugin's instance (#224) --- packages/rollup-plugin-babel/src/index.js | 3 +- .../rollup-plugin-babel/src/preflightCheck.js | 62 ++++++++++--------- 2 files changed, 34 insertions(+), 31 deletions(-) diff --git a/packages/rollup-plugin-babel/src/index.js b/packages/rollup-plugin-babel/src/index.js index 044a5184f..e69000396 100644 --- a/packages/rollup-plugin-babel/src/index.js +++ b/packages/rollup-plugin-babel/src/index.js @@ -1,7 +1,7 @@ import { dirname } from 'path'; import { buildExternalHelpers, transform } from '@babel/core'; import { createFilter } from 'rollup-pluginutils'; -import preflightCheck from './preflightCheck.js'; +import createPreflightCheck from './preflightCheck.js'; import helperPlugin from './helperPlugin.js'; import { warnOnce } from './utils.js'; import { RUNTIME, EXTERNAL, HELPERS } from './constants.js'; @@ -30,6 +30,7 @@ export default function babel ( options ) { } = unpackOptions(options); const filter = createFilter( include, exclude ); + const preflightCheck = createPreflightCheck(); return { name: 'babel', diff --git a/packages/rollup-plugin-babel/src/preflightCheck.js b/packages/rollup-plugin-babel/src/preflightCheck.js index cc47d8a3b..f71fcb073 100644 --- a/packages/rollup-plugin-babel/src/preflightCheck.js +++ b/packages/rollup-plugin-babel/src/preflightCheck.js @@ -12,43 +12,45 @@ function fallbackClassTransform () { }; } -let preflightCheckResults = {}; +export default function createPreflightCheck () { + let preflightCheckResults = {}; -export default function preflightCheck ( ctx, options, dir ) { - if ( !preflightCheckResults[ dir ] ) { - let helpers; + return ( ctx, options, dir ) => { + if ( !preflightCheckResults[ dir ] ) { + let helpers; - options = Object.assign( {}, options ); - delete options.only; - delete options.ignore; + options = Object.assign( {}, options ); + delete options.only; + delete options.ignore; - options.filename = join( dir, 'x.js' ); + options.filename = join( dir, 'x.js' ); - const inputCode = 'class Foo extends Bar {};\nexport default Foo;'; - let check = transform( inputCode, options ).code; + const inputCode = 'class Foo extends Bar {};\nexport default Foo;'; + let check = transform( inputCode, options ).code; - if ( ~check.indexOf('class ') ) { - options.plugins = (options.plugins || []).concat( fallbackClassTransform ); - check = transform( inputCode, options ).code; - } + if ( ~check.indexOf('class ') ) { + options.plugins = (options.plugins || []).concat( fallbackClassTransform ); + check = transform( inputCode, options ).code; + } - if ( ~check.indexOf( 'import _inherits' ) ) helpers = RUNTIME; - else if ( ~check.indexOf( 'function _inherits' ) ) helpers = INLINE; - else if ( ~check.indexOf( 'babelHelpers' ) ) helpers = EXTERNAL; - else { - ctx.error( 'An unexpected situation arose. Please raise an issue at https://github.com/rollup/rollup-plugin-babel/issues. Thanks!' ); - } + if ( ~check.indexOf( 'import _inherits' ) ) helpers = RUNTIME; + else if ( ~check.indexOf( 'function _inherits' ) ) helpers = INLINE; + else if ( ~check.indexOf( 'babelHelpers' ) ) helpers = EXTERNAL; + else { + ctx.error( 'An unexpected situation arose. Please raise an issue at https://github.com/rollup/rollup-plugin-babel/issues. Thanks!' ); + } - if ( - !~check.indexOf( 'export default' ) && - !~check.indexOf( 'export default Foo' ) && - !~check.indexOf( 'export { Foo as default }' ) - ) { - ctx.error( 'It looks like your Babel configuration specifies a module transformer. Please disable it. See https://github.com/rollup/rollup-plugin-babel#configuring-babel for more information' ); - } + if ( + !~check.indexOf( 'export default' ) && + !~check.indexOf( 'export default Foo' ) && + !~check.indexOf( 'export { Foo as default }' ) + ) { + ctx.error( 'It looks like your Babel configuration specifies a module transformer. Please disable it. See https://github.com/rollup/rollup-plugin-babel#configuring-babel for more information' ); + } - preflightCheckResults[ dir ] = helpers; - } + preflightCheckResults[ dir ] = helpers; + } - return preflightCheckResults[ dir ]; + return preflightCheckResults[ dir ]; + }; }