Calypso Async Babel Transform Plugin
babel-plugin-transform-wpcalypso-async
is a Babel plugin to facilitate optional
code-splitting by applying transformations to a asyncRequire
global function or the
<AsyncLoad />
React component.
Usage
Include in your Babel configuration as a plugin.
Example Babel config file:
{
"plugins": [
[ "@automattic/transform-wpcalypso-async", { "async": true } ]
]
}
See Babel options documentation for more information.
Transformations
asyncRequire
will transform to one of:
- dynamic
import()
if async
plugin option is true
- static
require
if async
plugin option is false
or unset - nothing (will be removed and no module will be imported) if the
ignore
plugin option is true
asyncRequire
expects one required argument, with an optional callback:
asyncRequire( 'calypso/components/search', ( Search ) => {
console.log( Search );
} );
<AsyncLoad />
will transform its require
string prop to a function invoking asyncRequire
when called.
<AsyncLoad require="calypso/components/search" />;
<AsyncLoad
require={ function ( callback ) {
asyncRequire( 'calypso/components/search', callback );
} }
/>;
Options
async
- controls whether transformations applied by the plugin should use a dynamic ESM import
statement that enables webpack code-splitting or the synchronous CommonJS require
function. This defaults to false
.ignore
- if set to true
, the asyncRequire
call will be completely removed, and AsyncLoad
will show the placeholder forever and won't do any import. Useful for server side rendering where the render is one-pass and doesn't wait for any imports to finish.