Breaking: Use named exports in metro-babel-register (#52564)

Summary:

Currently, `metro-babel-register` has a function as its default export, to which we've tagged on various properties.

This tidies that up to a more idiomatic object of named exports, with `register` as a new one of them.

This also serves to make it more compatible with automatic TypeScript generation.

This is semver breaking, but `metro-babel-register` has very little usage outside Meta projects so isn't expected to be disruptive.

Changelog: [Internal]

Metro changelog:
```
 - **[Breaking]**: Move metro-babel-register's main function to a named export `register`
```

Differential Revision: D78157559
This commit is contained in:
Rob Hogan
2025-07-11 05:18:58 -07:00
committed by Facebook GitHub Bot
parent 12609aa3af
commit 7f54dd6cb3
+9 -1
View File
@@ -41,7 +41,15 @@ function registerForMonorepo() {
// $FlowExpectedError[cannot-resolve-module] - Won't resolve in OSS
require('@fb-tools/babel-register');
} else {
require('metro-babel-register')([
// Temporarily allow the default export to be a function (Metro <= 0.82),
// or contain a `register` function (Metro >= 0.83). Remove shim once Metro
// is bumped in OSS.
const metroBabelRegister = require('metro-babel-register') /*:: as $FlowFixMe */;
const registerFunction =
typeof metroBabelRegister.register === 'function'
? metroBabelRegister.register
: metroBabelRegister;
registerFunction([
PACKAGES_DIR,
PRIVATE_DIR,
SCRIPTS_DIR,