UNPKG

@isaacs/import-jsx

Version:

Require and transpile JSX on the fly (fork of import-jsx for node 17 support)

40 lines (33 loc) 756 B
'use strict'; // Only load these if compiled source is not already cached let babel; let jsxTransform; const transform = (source, options, modulePath) => { if (!babel) { babel = require('@babel/core'); jsxTransform = require('@babel/plugin-transform-react-jsx'); } if (source.includes('React')) { options.pragma = 'React.createElement'; options.pragmaFrag = 'React.Fragment'; } const plugins = [ [ jsxTransform, { pragma: options.pragma, pragmaFrag: options.pragmaFrag, useBuiltIns: true } ] ].filter(Boolean); const result = babel.transformSync(source, { plugins, filename: modulePath, sourceMaps: 'inline', babelrc: false, configFile: false }); return result.code; }; module.exports = transform;