From e52076df735f0d1df0234c995ebbc1da21b0f192 Mon Sep 17 00:00:00 2001 From: Alex Kotliarskyi Date: Wed, 18 May 2016 12:32:20 -0700 Subject: [PATCH] Add transform-react-jsx-source to react-native preset Summary: Putting this up as request for comments. The PR adds [transform-react-jsx-source](https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-react-jsx-source) to the list of plugins that come by default with the `react-native` preset. It will enable the use of a bunch of really cool tooling around JSX, however those are generally useful only in development mode. Is changing `react-native` preset the right thing to do in this case? Is there a way to enable this transform only in DEV? Should I add this somewhere else? Closes https://github.com/facebook/react-native/pull/6351 Differential Revision: D3302906 Pulled By: frantic fbshipit-source-id: 012d3a4142168f9f90d30d1686115d4dc3996eb9 --- transformer.js | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/transformer.js b/transformer.js index 18da16f2..faf01669 100644 --- a/transformer.js +++ b/transformer.js @@ -100,15 +100,22 @@ function buildBabelConfig(filename, options) { function transform(src, filename, options) { options = options || {}; - const babelConfig = buildBabelConfig(filename, options); - const result = babel.transform(src, babelConfig); + const OLD_BABEL_ENV = process.env.BABEL_ENV; + process.env.BABEL_ENV = options.dev ? 'development' : 'production'; - return { - ast: result.ast, - code: result.code, - map: result.map, - filename: filename, - }; + try { + const babelConfig = buildBabelConfig(filename, options); + const result = babel.transform(src, babelConfig); + + return { + ast: result.ast, + code: result.code, + map: result.map, + filename: filename, + }; + } finally { + process.env.BABEL_ENV = OLD_BABEL_ENV; + } } module.exports = function(data, callback) {