import-essex
Version:
Import JSX as essex components in NodeJS
40 lines (35 loc) • 789 B
JavaScript
// Only load these if compiled source is not already cached
let babel, reactPreset;
const transform = async (source, filename) => {
if (!babel) {
babel = await import('@babel/core');
reactPreset = await import('@babel/preset-react');
}
const presets = [
[
reactPreset.default,
{
runtime: 'automatic',
importSource: 'essex',
development: true,
pure: false,
useBuiltIns: true,
useSpread: true,
},
],
];
try {
const result = await babel.transformAsync(source, {
presets,
filename,
sourceMaps: 'inline',
babelrc: false,
configFile: false,
});
return result.code;
} catch (e) {
console.error(e.message);
throw e;
}
};
export default transform;