Skip to content

Commit f4319a0

Browse files
authored
Add missing @stylexjs/babel-plugin in web-example (#6886)
## Summary This PR fixes the following errors that occur when trying to run web-example using `yarn start --reset-cache`: ``` Web Bundling failed 174ms apps/web-example/index.js (1 module) ERROR index.js: Cannot find module '@stylexjs/babel-plugin' Require stack: - /Users/tomekzaw/RNOS/react-native-reanimated/apps/web-example/babel.config.js - /Users/tomekzaw/RNOS/react-native-reanimated/node_modules/@babel/core/lib/config/files/module-types.js - /Users/tomekzaw/RNOS/react-native-reanimated/node_modules/@babel/core/lib/config/files/configuration.js - /Users/tomekzaw/RNOS/react-native-reanimated/node_modules/@babel/core/lib/config/files/index.js - /Users/tomekzaw/RNOS/react-native-reanimated/node_modules/@babel/core/lib/index.js - /Users/tomekzaw/RNOS/react-native-reanimated/apps/web-example/node_modules/@expo/metro-config/build/transform-worker/metro-transform-worker.js - /Users/tomekzaw/RNOS/react-native-reanimated/apps/web-example/node_modules/@expo/metro-config/build/transform-worker/transform-worker.js - /Users/tomekzaw/RNOS/react-native-reanimated/node_modules/metro/src/DeltaBundler/Worker.flow.js - /Users/tomekzaw/RNOS/react-native-reanimated/node_modules/metro/src/DeltaBundler/Worker.js - /Users/tomekzaw/RNOS/react-native-reanimated/node_modules/jest-worker/build/workers/processChild.js ``` Then I faced another error: ``` Web Bundling failed 5562ms apps/web-example/index.js (1325 modules) ERROR ReferenceError: SHA-1 for file /Users/tomekzaw/RNOS/react-native-reanimated/node_modules/@react-native/js-polyfills/error-guard.js is not computed. Potential causes: 1) You have symlinks in your project - watchman does not follow symlinks. 2) Check `blockList` in your metro.config.js and make sure it isn't excluding the file path. at DependencyGraph.getSha1 (/Users/tomekzaw/RNOS/react-native-reanimated/node_modules/metro/src/node-haste/DependencyGraph.js:181:13) at Transformer._getSha1 (/Users/tomekzaw/RNOS/react-native-reanimated/node_modules/metro/src/Bundler.js:15:26) at Transformer.transformFile (/Users/tomekzaw/RNOS/react-native-reanimated/node_modules/metro/src/DeltaBundler/Transformer.js:92:19) at Bundler.transformFile (/Users/tomekzaw/RNOS/react-native-reanimated/node_modules/metro/src/Bundler.js:43:30) at processTicksAndRejections (node:internal/process/task_queues:95:5) at Object.transform (/Users/tomekzaw/RNOS/react-native-reanimated/node_modules/metro/src/lib/transformHelpers.js:134:12) at transform (/Users/tomekzaw/RNOS/react-native-reanimated/node_modules/metro/src/DeltaBundler/Graph.js:164:26) at visit (/Users/tomekzaw/RNOS/react-native-reanimated/node_modules/metro/src/DeltaBundler/buildSubgraph.js:82:29) at async Promise.all (index 3) at buildSubgraph (/Users/tomekzaw/RNOS/react-native-reanimated/node_modules/metro/src/DeltaBundler/buildSubgraph.js:103:3) ``` Turns out it's dependent on whether react-native is hoisted or not so I applied the following patch for `metro.config.js` that @tjzel had sent me: ```js const hasReactNative = require.resolve('react-native/package.json', { paths: [projectRoot], }); if (!hasReactNative) { const modulesToBlock = ['@react-native']; // @ts-expect-error config.resolver.blacklistRE = exclusionList( modulesToBlock.map( (m) => new RegExp( `^${escape(path.join(monorepoRoot, 'node_modules', m))}\\/.*$` ) ) ); } ``` Finally, I bumped `react-native-web` and `@expo/metro-runtime` to the latest versions. Now we can launch web-example using `yarn start --reset-cache`. ## Test plan
1 parent 6c55c86 commit f4319a0

File tree

4 files changed

+147
-34
lines changed

4 files changed

+147
-34
lines changed

apps/web-example/babel.config.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ module.exports = function (api) {
2323
if (disableBabelPlugin) {
2424
console.log('Starting Web example without Babel plugin.');
2525
} else {
26-
// @ts-expect-error
2726
plugins.push('react-native-reanimated/plugin');
2827
}
2928

apps/web-example/metro.config.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,20 @@ config.resolver.nodeModulesPaths = [
2222
path.resolve(monorepoRoot, 'node_modules'),
2323
];
2424

25-
const modulesToBlock = ['@react-native'];
25+
const hasReactNative = require.resolve('react-native/package.json', {
26+
paths: [projectRoot],
27+
});
28+
if (!hasReactNative) {
29+
const modulesToBlock = ['@react-native'];
30+
// @ts-expect-error
31+
config.resolver.blacklistRE = exclusionList(
32+
modulesToBlock.map(
33+
(m) =>
34+
new RegExp(
35+
`^${escape(path.join(monorepoRoot, 'node_modules', m))}\\/.*$`
36+
)
37+
)
38+
);
39+
}
2640

27-
// @ts-expect-error
28-
config.resolver.blacklistRE = exclusionList(
29-
modulesToBlock.map(
30-
(m) =>
31-
new RegExp(`^${escape(path.join(monorepoRoot, 'node_modules', m))}\\/.*$`)
32-
)
33-
);
34-
35-
// @ts-expect-error
3641
module.exports = wrapWithReanimatedMetroConfig(config);

apps/web-example/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,12 @@
2121
"react-dom": "18.3.1",
2222
"react-native": "0.76.5",
2323
"react-native-reanimated": "workspace:*",
24-
"react-native-web": "0.19.11"
24+
"react-native-web": "0.19.13"
2525
},
2626
"devDependencies": {
2727
"@babel/core": "^7.20.0",
28-
"@expo/metro-runtime": "^3.2.1",
28+
"@expo/metro-runtime": "~4.0.0",
29+
"@stylexjs/babel-plugin": "^0.10.0",
2930
"@types/eslint": "^8",
3031
"eslint": "^8.57.0",
3132
"prettier": "^3.3.3",

yarn.lock

Lines changed: 129 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ __metadata:
8585
languageName: node
8686
linkType: hard
8787

88-
"@babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.2":
88+
"@babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.26.2":
8989
version: 7.26.2
9090
resolution: "@babel/code-frame@npm:7.26.2"
9191
dependencies:
@@ -133,6 +133,29 @@ __metadata:
133133
languageName: node
134134
linkType: hard
135135

136+
"@babel/core@npm:^7.25.8":
137+
version: 7.26.0
138+
resolution: "@babel/core@npm:7.26.0"
139+
dependencies:
140+
"@ampproject/remapping": "npm:^2.2.0"
141+
"@babel/code-frame": "npm:^7.26.0"
142+
"@babel/generator": "npm:^7.26.0"
143+
"@babel/helper-compilation-targets": "npm:^7.25.9"
144+
"@babel/helper-module-transforms": "npm:^7.26.0"
145+
"@babel/helpers": "npm:^7.26.0"
146+
"@babel/parser": "npm:^7.26.0"
147+
"@babel/template": "npm:^7.25.9"
148+
"@babel/traverse": "npm:^7.25.9"
149+
"@babel/types": "npm:^7.26.0"
150+
convert-source-map: "npm:^2.0.0"
151+
debug: "npm:^4.1.0"
152+
gensync: "npm:^1.0.0-beta.2"
153+
json5: "npm:^2.2.3"
154+
semver: "npm:^6.3.1"
155+
checksum: 10/65767bfdb1f02e80d3af4f138066670ef8fdd12293de85ef151758a901c191c797e86d2e99b11c4cdfca33c72385ecaf38bbd7fa692791ec44c77763496b9b93
156+
languageName: node
157+
linkType: hard
158+
136159
"@babel/eslint-parser@npm:^7.20.0":
137160
version: 7.25.9
138161
resolution: "@babel/eslint-parser@npm:7.25.9"
@@ -173,7 +196,7 @@ __metadata:
173196
languageName: node
174197
linkType: hard
175198

176-
"@babel/generator@npm:^7.26.3":
199+
"@babel/generator@npm:^7.26.0, @babel/generator@npm:^7.26.3":
177200
version: 7.26.3
178201
resolution: "@babel/generator@npm:7.26.3"
179202
dependencies:
@@ -331,6 +354,16 @@ __metadata:
331354
languageName: node
332355
linkType: hard
333356

357+
"@babel/helper-module-imports@npm:^7.22.15, @babel/helper-module-imports@npm:^7.25.9":
358+
version: 7.25.9
359+
resolution: "@babel/helper-module-imports@npm:7.25.9"
360+
dependencies:
361+
"@babel/traverse": "npm:^7.25.9"
362+
"@babel/types": "npm:^7.25.9"
363+
checksum: 10/e090be5dee94dda6cd769972231b21ddfae988acd76b703a480ac0c96f3334557d70a965bf41245d6ee43891e7571a8b400ccf2b2be5803351375d0f4e5bcf08
364+
languageName: node
365+
linkType: hard
366+
334367
"@babel/helper-module-imports@npm:^7.24.7":
335368
version: 7.24.7
336369
resolution: "@babel/helper-module-imports@npm:7.24.7"
@@ -341,16 +374,6 @@ __metadata:
341374
languageName: node
342375
linkType: hard
343376

344-
"@babel/helper-module-imports@npm:^7.25.9":
345-
version: 7.25.9
346-
resolution: "@babel/helper-module-imports@npm:7.25.9"
347-
dependencies:
348-
"@babel/traverse": "npm:^7.25.9"
349-
"@babel/types": "npm:^7.25.9"
350-
checksum: 10/e090be5dee94dda6cd769972231b21ddfae988acd76b703a480ac0c96f3334557d70a965bf41245d6ee43891e7571a8b400ccf2b2be5803351375d0f4e5bcf08
351-
languageName: node
352-
linkType: hard
353-
354377
"@babel/helper-module-transforms@npm:^7.24.7, @babel/helper-module-transforms@npm:^7.24.8, @babel/helper-module-transforms@npm:^7.25.0, @babel/helper-module-transforms@npm:^7.25.2":
355378
version: 7.25.2
356379
resolution: "@babel/helper-module-transforms@npm:7.25.2"
@@ -365,6 +388,19 @@ __metadata:
365388
languageName: node
366389
linkType: hard
367390

391+
"@babel/helper-module-transforms@npm:^7.26.0":
392+
version: 7.26.0
393+
resolution: "@babel/helper-module-transforms@npm:7.26.0"
394+
dependencies:
395+
"@babel/helper-module-imports": "npm:^7.25.9"
396+
"@babel/helper-validator-identifier": "npm:^7.25.9"
397+
"@babel/traverse": "npm:^7.25.9"
398+
peerDependencies:
399+
"@babel/core": ^7.0.0
400+
checksum: 10/9841d2a62f61ad52b66a72d08264f23052d533afc4ce07aec2a6202adac0bfe43014c312f94feacb3291f4c5aafe681955610041ece2c276271adce3f570f2f5
401+
languageName: node
402+
linkType: hard
403+
368404
"@babel/helper-optimise-call-expression@npm:^7.24.7":
369405
version: 7.24.7
370406
resolution: "@babel/helper-optimise-call-expression@npm:7.24.7"
@@ -553,6 +589,16 @@ __metadata:
553589
languageName: node
554590
linkType: hard
555591

592+
"@babel/helpers@npm:^7.26.0":
593+
version: 7.26.0
594+
resolution: "@babel/helpers@npm:7.26.0"
595+
dependencies:
596+
"@babel/template": "npm:^7.25.9"
597+
"@babel/types": "npm:^7.26.0"
598+
checksum: 10/fd4757f65d10b64cfdbf4b3adb7ea6ffff9497c53e0786452f495d1f7794da7e0898261b4db65e1c62bbb9a360d7d78a1085635c23dfc3af2ab6dcba06585f86
599+
languageName: node
600+
linkType: hard
601+
556602
"@babel/highlight@npm:^7.10.4, @babel/highlight@npm:^7.24.7":
557603
version: 7.24.7
558604
resolution: "@babel/highlight@npm:7.24.7"
@@ -576,7 +622,7 @@ __metadata:
576622
languageName: node
577623
linkType: hard
578624

579-
"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.3":
625+
"@babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.3":
580626
version: 7.26.3
581627
resolution: "@babel/parser@npm:7.26.3"
582628
dependencies:
@@ -2156,7 +2202,7 @@ __metadata:
21562202
languageName: node
21572203
linkType: hard
21582204

2159-
"@babel/traverse@npm:^7.25.9":
2205+
"@babel/traverse@npm:^7.25.7, @babel/traverse@npm:^7.25.9":
21602206
version: 7.26.4
21612207
resolution: "@babel/traverse@npm:7.26.4"
21622208
dependencies:
@@ -2182,7 +2228,7 @@ __metadata:
21822228
languageName: node
21832229
linkType: hard
21842230

2185-
"@babel/types@npm:^7.25.9, @babel/types@npm:^7.26.3":
2231+
"@babel/types@npm:^7.25.8, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.26.3":
21862232
version: 7.26.3
21872233
resolution: "@babel/types@npm:7.26.3"
21882234
dependencies:
@@ -2752,6 +2798,13 @@ __metadata:
27522798
languageName: node
27532799
linkType: hard
27542800

2801+
"@dual-bundle/import-meta-resolve@npm:^4.1.0":
2802+
version: 4.1.0
2803+
resolution: "@dual-bundle/import-meta-resolve@npm:4.1.0"
2804+
checksum: 10/a69d804a8e8e93732ac5525f85b9366ae78ec60fa02f0d5b4f2d625e18b355ba02502cdaef616ab1eac4450b966d2a398b59577a17483e4f8a350d062357bdf4
2805+
languageName: node
2806+
linkType: hard
2807+
27552808
"@egjs/hammerjs@npm:^2.0.17":
27562809
version: 2.0.17
27572810
resolution: "@egjs/hammerjs@npm:2.0.17"
@@ -3662,12 +3715,12 @@ __metadata:
36623715
languageName: node
36633716
linkType: hard
36643717

3665-
"@expo/metro-runtime@npm:^3.2.1":
3666-
version: 3.2.3
3667-
resolution: "@expo/metro-runtime@npm:3.2.3"
3718+
"@expo/metro-runtime@npm:~4.0.0":
3719+
version: 4.0.0
3720+
resolution: "@expo/metro-runtime@npm:4.0.0"
36683721
peerDependencies:
36693722
react-native: "*"
3670-
checksum: 10/c798321e05943d3962e9d3b0693af14934e284c8de2de5534989d414c5a1889c96f26f229cd2cd4598d988c9e146c56fb19d9ca5b074518dbdf8110bd45f942a
3723+
checksum: 10/2f5bd81e4d0735dc9b99ac4f35169969eb9dc303669ddc3158f670a3c36115f87d479a6fda11c1d5acab551f1015a32271c83001e8874493f0ec58c02f8ddbf3
36713724
languageName: node
36723725
linkType: hard
36733726

@@ -6306,6 +6359,41 @@ __metadata:
63066359
languageName: node
63076360
linkType: hard
63086361

6362+
"@stylexjs/babel-plugin@npm:^0.10.0":
6363+
version: 0.10.0
6364+
resolution: "@stylexjs/babel-plugin@npm:0.10.0"
6365+
dependencies:
6366+
"@babel/core": "npm:^7.25.8"
6367+
"@babel/helper-module-imports": "npm:^7.22.15"
6368+
"@babel/traverse": "npm:^7.25.7"
6369+
"@babel/types": "npm:^7.25.8"
6370+
"@dual-bundle/import-meta-resolve": "npm:^4.1.0"
6371+
"@stylexjs/shared": "npm:0.10.0"
6372+
"@stylexjs/stylex": "npm:0.10.0"
6373+
checksum: 10/42e676a35096055549c5838e5484dc5951305a422e7087687f2034347cbafd04fb4d2bbf0cbb2ed0efffa37a55074052fcb75737a11809d3d62e763419885d60
6374+
languageName: node
6375+
linkType: hard
6376+
6377+
"@stylexjs/shared@npm:0.10.0":
6378+
version: 0.10.0
6379+
resolution: "@stylexjs/shared@npm:0.10.0"
6380+
dependencies:
6381+
postcss-value-parser: "npm:^4.1.0"
6382+
checksum: 10/8472c331368907e575eed3e3a9127f2b017f4ba21a64598890c059d6e8c0ed22c4764adb8dffbfffc018d71009068e7808c2b5ee191c567e9a3f38bc846ed98c
6383+
languageName: node
6384+
linkType: hard
6385+
6386+
"@stylexjs/stylex@npm:0.10.0":
6387+
version: 0.10.0
6388+
resolution: "@stylexjs/stylex@npm:0.10.0"
6389+
dependencies:
6390+
css-mediaquery: "npm:^0.1.2"
6391+
invariant: "npm:^2.2.4"
6392+
styleq: "npm:0.1.3"
6393+
checksum: 10/8675c3a65453f5709dc7131fc7639e82b3c7dcda39f1da5debb6b51ad68169f00cdb0bc937b8719ef3576e17f6f1e533ba8892bce8e87ae0d939733de7078a11
6394+
languageName: node
6395+
linkType: hard
6396+
63096397
"@stylexjs/stylex@npm:^0.7.5":
63106398
version: 0.7.5
63116399
resolution: "@stylexjs/stylex@npm:0.7.5"
@@ -18174,6 +18262,25 @@ __metadata:
1817418262
languageName: node
1817518263
linkType: hard
1817618264

18265+
"react-native-web@npm:0.19.13":
18266+
version: 0.19.13
18267+
resolution: "react-native-web@npm:0.19.13"
18268+
dependencies:
18269+
"@babel/runtime": "npm:^7.18.6"
18270+
"@react-native/normalize-colors": "npm:^0.74.1"
18271+
fbjs: "npm:^3.0.4"
18272+
inline-style-prefixer: "npm:^6.0.1"
18273+
memoize-one: "npm:^6.0.0"
18274+
nullthrows: "npm:^1.1.1"
18275+
postcss-value-parser: "npm:^4.2.0"
18276+
styleq: "npm:^0.1.3"
18277+
peerDependencies:
18278+
react: ^18.0.0
18279+
react-dom: ^18.0.0
18280+
checksum: 10/65e0660fb37c1f7e3864a7b506acdd3bbf249de516166775cbf2f371bc28f6e965bc01cbd214bfe820c1a933aee58b6fb29298ccd0dc5f412f147a57e7126dd9
18281+
languageName: node
18282+
linkType: hard
18283+
1817718284
"react-native-worklets@workspace:packages/react-native-worklets":
1817818285
version: 0.0.0-use.local
1817918286
resolution: "react-native-worklets@workspace:packages/react-native-worklets"
@@ -21280,10 +21387,11 @@ __metadata:
2128021387
resolution: "web-example@workspace:apps/web-example"
2128121388
dependencies:
2128221389
"@babel/core": "npm:^7.20.0"
21283-
"@expo/metro-runtime": "npm:^3.2.1"
21390+
"@expo/metro-runtime": "npm:~4.0.0"
2128421391
"@expo/vector-icons": "npm:^14.0.0"
2128521392
"@react-navigation/native": "npm:^7.0.0"
2128621393
"@shopify/flash-list": "npm:^1.7.1"
21394+
"@stylexjs/babel-plugin": "npm:^0.10.0"
2128721395
"@types/eslint": "npm:^8"
2128821396
common-app: "workspace:*"
2128921397
eslint: "npm:^8.57.0"
@@ -21293,7 +21401,7 @@ __metadata:
2129321401
react-dom: "npm:18.3.1"
2129421402
react-native: "npm:0.76.5"
2129521403
react-native-reanimated: "workspace:*"
21296-
react-native-web: "npm:0.19.11"
21404+
react-native-web: "npm:0.19.13"
2129721405
serve: "npm:^14.2.3"
2129821406
typescript: "npm:~5.3.0"
2129921407
languageName: unknown

0 commit comments

Comments
 (0)