Skip to content

Commit

Permalink
Centralize babel logic in preset
Browse files Browse the repository at this point in the history
  • Loading branch information
oandregal committed Mar 12, 2019
1 parent 8bb43ee commit 01a10f8
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 73 deletions.
65 changes: 7 additions & 58 deletions bin/packages/get-babel-config.js
Original file line number Diff line number Diff line change
@@ -1,64 +1,13 @@
/**
* External dependencies
*/
const { get, map } = require( 'lodash' );
const babel = require( '@babel/core' );

/**
* WordPress dependencies
*/
const { options: babelDefaultConfig } = babel.loadPartialConfig( {
configFile: '@wordpress/babel-preset-default',
} );
const { plugins, presets } = babelDefaultConfig;

const overrideOptions = ( target, targetName, options ) => {
if ( get( target, [ 'file', 'request' ] ) === targetName ) {
return [ targetName, Object.assign(
{},
target.options,
options
) ];
}
return target;
module.exports = function( environment ) {
process.env.WP_EDITOR_BUILD = environment;
const { options } = babel.loadPartialConfig( {
configFile: '@wordpress/babel-preset-default',
} );
delete process.env.WP_EDITOR_BUILD;
return options;
};

const babelConfigs = {
main: Object.assign(
{},
babelDefaultConfig,
{
plugins,
presets: map(
presets,
( preset ) => overrideOptions( preset, '@babel/preset-env', {
modules: 'commonjs',
} )
),
}
),
module: Object.assign(
{},
babelDefaultConfig,
{
plugins: map(
plugins,
( plugin ) => overrideOptions( plugin, '@babel/plugin-transform-runtime', {
useESModules: true,
} )
),
presets: map(
presets,
( preset ) => overrideOptions( preset, '@babel/preset-env', {
modules: false,
} )
),
}
),
};

function getBabelConfig( environment ) {
return babelConfigs[ environment ];
}

module.exports = getBabelConfig;
56 changes: 41 additions & 15 deletions packages/babel-preset-default/index.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,47 @@
module.exports = function( api ) {
const isTestEnv = api.env() === 'test';

const getPresetEnv = () => {
const opts = {};

if ( isTestEnv ) {
opts.useBuiltIns = 'usage';
} else {
opts.modules = false;
opts.targets = {
browsers: require( '@wordpress/browserslist-config' ),
};
}

// console.log( 'editor build ', process.env.WP_EDITOR_BUILD );
if ( process.env.WP_EDITOR_BUILD === 'main' ) {
opts.modules = 'commonjs';
} else if ( process.env.WP_EDITOR_BUILD === 'module' ) {
opts.modules = false;
}

return [ require.resolve( '@babel/preset-env' ), opts ];
};

const maybeGetPluginTransformRuntime = () => {
if ( isTestEnv ) {
return undefined;
}

const opts = {
helpers: true,
useESModules: false,
};

if ( process.env.WP_EDITOR_BUILD === 'module' ) {
opts.useESModules = true;
}

return [ require.resolve( '@babel/plugin-transform-runtime' ), opts ];
};

return {
presets: [
! isTestEnv && [ require.resolve( '@babel/preset-env' ), {
modules: false,
targets: {
browsers: require( '@wordpress/browserslist-config' ),
},
} ],
isTestEnv && [ require.resolve( '@babel/preset-env' ), {
useBuiltIns: 'usage',
} ],
].filter( Boolean ),
presets: [ getPresetEnv() ],
plugins: [
require.resolve( '@babel/plugin-proposal-object-rest-spread' ),
[
Expand All @@ -27,10 +56,7 @@ module.exports = function( api ) {
pragma: 'createElement',
} ],
require.resolve( '@babel/plugin-proposal-async-generator-functions' ),
! isTestEnv && [ require.resolve( '@babel/plugin-transform-runtime' ), {
helpers: true,
useESModules: false,
} ],
maybeGetPluginTransformRuntime(),
].filter( Boolean ),
};
};

0 comments on commit 01a10f8

Please sign in to comment.