Skip to content

Commit 02d7833

Browse files
committed
fix(#48) local build of @callstack/out-of-tree-platforms (#50)
1 parent 8f2b351 commit 02d7833

File tree

4 files changed

+50
-45
lines changed

4 files changed

+50
-45
lines changed

packages/out-of-tree-platforms/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
},
1313
"license": "MIT",
1414
"exports": {
15-
".": "./dist/index.js",
15+
".": "./src/index.js",
1616
"./package.json": "./package.json"
1717
},
1818
"files": [
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/**
2+
* Copyright (c) Meta Platforms, Inc. and affiliates.
3+
*
4+
* This source code is licensed under the MIT license found in the
5+
* LICENSE file in the root directory of this source tree.
6+
*
7+
* @flow
8+
* @format
9+
*/
10+
11+
import type {CustomResolver} from 'metro-resolver';
12+
13+
type ResolverConfig = {
14+
platformNameMap: {[platform: string]: string},
15+
};
16+
17+
/**
18+
* Creates a custom Metro resolver that maps platform extensions to package names.
19+
* To be used in app's `metro.config.js` as `resolver.resolveRequest`.
20+
*/
21+
export const getPlatformResolver = (config: ResolverConfig): CustomResolver => {
22+
return (context, moduleName, platform) => {
23+
// `customResolverOptions` is populated through `?resolver.platformExtension` query params
24+
// in the jsBundleURLForBundleRoot method of the react-native/React/Base/RCTBundleURLProvider.mm
25+
const platformExtension = context.customResolverOptions?.platformExtension;
26+
let modifiedModuleName = moduleName;
27+
if (
28+
typeof platformExtension === 'string' &&
29+
config.platformNameMap?.[platformExtension]
30+
) {
31+
const packageName = config.platformNameMap[platformExtension];
32+
if (moduleName === 'react-native') {
33+
modifiedModuleName = packageName;
34+
} else if (moduleName.startsWith('react-native/')) {
35+
modifiedModuleName = `${packageName}/${modifiedModuleName.slice(
36+
'react-native/'.length,
37+
)}`;
38+
}
39+
}
40+
41+
return context.resolveRequest(context, modifiedModuleName, platform);
42+
};
43+
};
Lines changed: 4 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,5 @@
1-
/**
2-
* Copyright (c) Meta Platforms, Inc. and affiliates.
3-
*
4-
* This source code is licensed under the MIT license found in the
5-
* LICENSE file in the root directory of this source tree.
6-
*
7-
* @flow
8-
* @format
9-
*/
1+
if (!process.env.BUILD_EXCLUDE_BABEL_REGISTER) {
2+
require('../../../scripts/build/babel-register').registerForMonorepo();
3+
}
104

11-
import type {CustomResolver} from 'metro-resolver';
12-
13-
type ResolverConfig = {
14-
platformNameMap: {[platform: string]: string},
15-
};
16-
17-
/**
18-
* Creates a custom Metro resolver that maps platform extensions to package names.
19-
* To be used in app's `metro.config.js` as `resolver.resolveRequest`.
20-
*/
21-
export const getPlatformResolver = (config: ResolverConfig): CustomResolver => {
22-
return (context, moduleName, platform) => {
23-
// `customResolverOptions` is populated through `?resolver.platformExtension` query params
24-
// in the jsBundleURLForBundleRoot method of the react-native/React/Base/RCTBundleURLProvider.mm
25-
const platformExtension = context.customResolverOptions?.platformExtension;
26-
let modifiedModuleName = moduleName;
27-
28-
if (
29-
typeof platformExtension === 'string' &&
30-
config.platformNameMap?.[platformExtension]
31-
) {
32-
const packageName = config.platformNameMap[platformExtension];
33-
if (moduleName === 'react-native') {
34-
modifiedModuleName = packageName;
35-
} else if (moduleName.startsWith('react-native/')) {
36-
modifiedModuleName = `${packageName}/${modifiedModuleName.slice(
37-
'react-native/'.length,
38-
)}`;
39-
}
40-
}
41-
42-
return context.resolveRequest(context, modifiedModuleName, platform);
43-
};
44-
};
5+
export * from './getPlatformResolver';

packages/rn-tester/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525
"dependencies": {
2626
"flow-enums-runtime": "^0.0.6",
2727
"invariant": "^2.2.4",
28-
"nullthrows": "^1.1.1"
28+
"nullthrows": "^1.1.1",
29+
"@callstack/out-of-tree-platforms": "0.74.0"
2930
},
3031
"peerDependencies": {
3132
"react": "18.2.0",

0 commit comments

Comments
 (0)