From e493611b1f9d49fd5621ae88f7fa18394d4feef0 Mon Sep 17 00:00:00 2001 From: Emily Xiong Date: Tue, 7 Jun 2022 15:40:26 -0400 Subject: [PATCH] fix(react-native): use appsDir when generating app (#10606) --- lerna.json | 4 +--- .../src/generators/application/application.ts | 2 +- .../application/lib/nomalize-options.spec.ts | 18 +++++++++++++----- .../application/lib/normalize-options.ts | 15 ++++++++++++--- 4 files changed, 27 insertions(+), 12 deletions(-) diff --git a/lerna.json b/lerna.json index 2e00be0934bed..999076ad7d958 100644 --- a/lerna.json +++ b/lerna.json @@ -1,7 +1,5 @@ { - "packages": [ - "build/packages/*" - ], + "packages": ["build/packages/*"], "version": "14.2.1", "granularPathspec": false, "command": { diff --git a/packages/react-native/src/generators/application/application.ts b/packages/react-native/src/generators/application/application.ts index aeda06b08a4cd..939c6fe86f1a5 100644 --- a/packages/react-native/src/generators/application/application.ts +++ b/packages/react-native/src/generators/application/application.ts @@ -23,7 +23,7 @@ export async function reactNativeApplicationGenerator( host: Tree, schema: Schema ): Promise { - const options = normalizeOptions(schema); + const options = normalizeOptions(host, schema); createApplicationFiles(host, options); addProject(host, options); diff --git a/packages/react-native/src/generators/application/lib/nomalize-options.spec.ts b/packages/react-native/src/generators/application/lib/nomalize-options.spec.ts index 2e21f01a8332a..b3228077124e0 100644 --- a/packages/react-native/src/generators/application/lib/nomalize-options.spec.ts +++ b/packages/react-native/src/generators/application/lib/nomalize-options.spec.ts @@ -1,8 +1,16 @@ +import { Tree } from '@nrwl/devkit'; +import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; import { Linter } from '@nrwl/linter'; import { Schema } from '../schema'; import { normalizeOptions } from './normalize-options'; describe('Normalize Options', () => { + let appTree: Tree; + + beforeEach(() => { + appTree = createTreeWithEmptyWorkspace(); + }); + it('should normalize options with name in kebab case', () => { const schema: Schema = { name: 'my-app', @@ -10,7 +18,7 @@ describe('Normalize Options', () => { e2eTestRunner: 'none', install: false, }; - const options = normalizeOptions(schema); + const options = normalizeOptions(appTree, schema); expect(options).toEqual({ androidProjectRoot: 'apps/my-app/android', appProjectRoot: 'apps/my-app', @@ -35,7 +43,7 @@ describe('Normalize Options', () => { e2eTestRunner: 'none', install: false, }; - const options = normalizeOptions(schema); + const options = normalizeOptions(appTree, schema); expect(options).toEqual({ androidProjectRoot: 'apps/my-app/android', appProjectRoot: 'apps/my-app', @@ -60,7 +68,7 @@ describe('Normalize Options', () => { e2eTestRunner: 'none', install: false, }; - const options = normalizeOptions(schema); + const options = normalizeOptions(appTree, schema); expect(options).toEqual({ androidProjectRoot: 'apps/directory/my-app/android', appProjectRoot: 'apps/directory/my-app', @@ -85,7 +93,7 @@ describe('Normalize Options', () => { e2eTestRunner: 'none', install: false, }; - const options = normalizeOptions(schema); + const options = normalizeOptions(appTree, schema); expect(options).toEqual({ androidProjectRoot: 'apps/directory/my-app/android', appProjectRoot: 'apps/directory/my-app', @@ -110,7 +118,7 @@ describe('Normalize Options', () => { e2eTestRunner: 'none', install: false, }; - const options = normalizeOptions(schema); + const options = normalizeOptions(appTree, schema); expect(options).toEqual({ androidProjectRoot: 'apps/my-app/android', appProjectRoot: 'apps/my-app', diff --git a/packages/react-native/src/generators/application/lib/normalize-options.ts b/packages/react-native/src/generators/application/lib/normalize-options.ts index af1678cf25507..1a7845470522b 100644 --- a/packages/react-native/src/generators/application/lib/normalize-options.ts +++ b/packages/react-native/src/generators/application/lib/normalize-options.ts @@ -1,4 +1,9 @@ -import { names } from '@nrwl/devkit'; +import { + getWorkspaceLayout, + joinPathFragments, + names, + Tree, +} from '@nrwl/devkit'; import { join } from 'path'; import { Schema } from '../schema'; @@ -13,8 +18,12 @@ export interface NormalizedSchema extends Schema { entryFile: string; } -export function normalizeOptions(options: Schema): NormalizedSchema { +export function normalizeOptions( + host: Tree, + options: Schema +): NormalizedSchema { const { fileName, className } = names(options.name); + const { appsDir } = getWorkspaceLayout(host); const directoryName = options.directory ? names(options.directory).fileName @@ -25,7 +34,7 @@ export function normalizeOptions(options: Schema): NormalizedSchema { const appProjectName = projectDirectory.replace(new RegExp('/', 'g'), '-'); - const appProjectRoot = `apps/${projectDirectory}`; + const appProjectRoot = joinPathFragments(appsDir, projectDirectory); const iosProjectRoot = join(appProjectRoot, 'ios'); const androidProjectRoot = join(appProjectRoot, 'android');