Skip to content

Commit

Permalink
fix(react-native): fix unable to resolve on windows (nrwl#22759)
Browse files Browse the repository at this point in the history
  • Loading branch information
xiongemi authored Apr 10, 2024
1 parent aa6d464 commit 4cd1808
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 6 deletions.
7 changes: 4 additions & 3 deletions packages/expo/plugins/with-nx-metro.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { joinPathFragments, workspaceRoot } from '@nx/devkit';
import { workspaceRoot } from '@nx/devkit';
import { mergeConfig } from 'metro-config';
import type { MetroConfig } from 'metro-config';
import { existsSync, readdirSync, statSync } from 'fs-extra';
import { join } from 'path';

import { getResolveRequest } from './metro-resolver';

Expand All @@ -24,7 +25,7 @@ export async function withNxMetro(
(fileName) =>
!['dist', 'e2e'].includes(fileName) && !fileName.startsWith('.')
)
.map((fileName) => joinPathFragments(workspaceRoot, fileName))
.map((fileName) => join(workspaceRoot, fileName))
.filter((filePath) => statSync(filePath).isDirectory());

if (opts.watchFolders?.length) {
Expand All @@ -38,7 +39,7 @@ export async function withNxMetro(
const nxConfig: MetroConfig = {
resolver: {
resolveRequest: getResolveRequest(extensions),
nodeModulesPaths: [joinPathFragments(workspaceRoot, 'node_modules')],
nodeModulesPaths: [join(workspaceRoot, 'node_modules')],
},
watchFolders,
};
Expand Down
8 changes: 8 additions & 0 deletions packages/expo/src/utils/ensure-dependencies.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import {
addDependenciesToPackageJson,
detectPackageManager,
type GeneratorCallback,
type Tree,
} from '@nx/devkit';
import {
babelPresetExpoVersion,
babelRuntimeVersion,
expoMetroConfigVersion,
expoMetroRuntimeVersion,
expoSplashScreenVersion,
Expand All @@ -20,6 +22,7 @@ import {
} from './versions';

export function ensureDependencies(host: Tree): GeneratorCallback {
const isPnpm = detectPackageManager(host.root) === 'pnpm';
return addDependenciesToPackageJson(
host,
{
Expand All @@ -38,6 +41,11 @@ export function ensureDependencies(host: Tree): GeneratorCallback {
'@testing-library/jest-native': testingLibraryJestNativeVersion,
'jest-expo': jestExpoVersion,
'babel-preset-expo': babelPresetExpoVersion,
...(isPnpm
? {
'@babel/runtime': babelRuntimeVersion, // @babel/runtime is used by react-native-svg
}
: {}),
}
);
}
2 changes: 2 additions & 0 deletions packages/expo/src/utils/versions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,5 @@ export const reactNativeSvgVersion = '14.1.0';
export const testingLibraryReactNativeVersion = '~12.4.2';
export const testingLibraryJestNativeVersion = '~5.4.3';
export const jestExpoVersion = '~50.0.1';

export const babelRuntimeVersion = '7.22.6';
7 changes: 4 additions & 3 deletions packages/react-native/plugins/with-nx-metro.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { joinPathFragments, workspaceRoot } from '@nx/devkit';
import { workspaceRoot } from '@nx/devkit';
import { mergeConfig } from 'metro-config';
import type { MetroConfig } from 'metro-config';
import { existsSync, readdirSync, statSync } from 'fs-extra';
import { join } from 'path';

import { getResolveRequest } from './metro-resolver';

Expand All @@ -24,7 +25,7 @@ export async function withNxMetro(
(fileName) =>
!['dist', 'e2e'].includes(fileName) && !fileName.startsWith('.')
)
.map((fileName) => joinPathFragments(workspaceRoot, fileName))
.map((fileName) => join(workspaceRoot, fileName))
.filter((filePath) => statSync(filePath).isDirectory());

if (opts.watchFolders?.length) {
Expand All @@ -38,7 +39,7 @@ export async function withNxMetro(
const nxConfig: MetroConfig = {
resolver: {
resolveRequest: getResolveRequest(extensions),
nodeModulesPaths: [joinPathFragments(workspaceRoot, 'node_modules')],
nodeModulesPaths: [join(workspaceRoot, 'node_modules')],
},
watchFolders,
};
Expand Down

0 comments on commit 4cd1808

Please sign in to comment.