diff options
author | dan <dan.abramov@gmail.com> | 2023-10-30 21:54:23 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-30 21:54:23 +0000 |
commit | 84ee64025f683ec846827bf98c26a0bf8c54c080 (patch) | |
tree | 4f9a7e40639cf716c628f5fef20aafe6dd0e0887 | |
parent | 6c11c0b81de34a486df9c67d8f04d0d2050ce9b3 (diff) | |
download | voidsky-84ee64025f683ec846827bf98c26a0bf8c54c080.tar.zst |
Let Metro handle import/export instead of Babel (#1772)
* Let Metro handle import/export instead of Babel * Keep using Babel for ESM->CJS in tests
-rw-r--r-- | babel.config.js | 6 | ||||
-rw-r--r-- | metro.config.js | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/babel.config.js b/babel.config.js index a38edf1d6..0baec0c3c 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,11 +1,17 @@ module.exports = function (api) { api.cache(true) + const isTestEnv = process.env.NODE_ENV === 'test' return { presets: [ [ 'babel-preset-expo', { lazyImports: true, + native: { + // Disable ESM -> CJS compilation because Metro takes care of it. + // However, we need it in Jest tests since those run without Metro. + disableImportExportTransform: !isTestEnv, + }, }, ], ], diff --git a/metro.config.js b/metro.config.js index 08527fced..a49d95f9a 100644 --- a/metro.config.js +++ b/metro.config.js @@ -8,7 +8,17 @@ cfg.resolver.sourceExts = process.env.RN_SRC_EXT cfg.transformer.getTransformOptions = async () => ({ transform: { + experimentalImportSupport: true, inlineRequires: true, + nonInlinedRequires: [ + // We can remove this option and rely on the default after + // https://github.com/facebook/metro/pull/1126 is released. + 'React', + 'react', + 'react/jsx-dev-runtime', + 'react/jsx-runtime', + 'react-native', + ], }, }) |