From 436b2870334b8396fd042f0e9c9d3599ba2a9eb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burak=20Gu=CC=88ner?= Date: Thu, 24 Oct 2024 21:24:15 +0300 Subject: [PATCH 1/3] fix: add react-native-community-cli dev dependency --- .../create-react-native-library/src/index.ts | 19 +++++++++++++++++-- .../templates/common/$package.json | 3 +++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/create-react-native-library/src/index.ts b/packages/create-react-native-library/src/index.ts index 5bb76e579..15d8df816 100644 --- a/packages/create-react-native-library/src/index.ts +++ b/packages/create-react-native-library/src/index.ts @@ -790,8 +790,23 @@ async function create(_argv: yargs.Arguments) { examplePackageJson.dependencies['react-native']; } - if (arch !== 'legacy' && example === 'vanilla') { - addCodegenBuildScript(folder, options.project.name); + if (example === 'vanilla') { + // React Native doesn't provide the community CLI as a dependency. + // We have to get read the version from the example app and put to the root package json + const exampleCommunityCLIVersion = + examplePackageJson.devDependencies['@react-native-community/cli']; + console.assert( + exampleCommunityCLIVersion !== undefined, + "The generated example app doesn't have community CLI installed" + ); + + rootPackageJson.devDependencies = rootPackageJson.devDependencies || {}; + rootPackageJson.devDependencies['@react-native-community/cli'] = + exampleCommunityCLIVersion; + + if (arch !== 'legacy') { + addCodegenBuildScript(folder, options.project.name); + } } } diff --git a/packages/create-react-native-library/templates/common/$package.json b/packages/create-react-native-library/templates/common/$package.json index e93ddd723..a01a6ae94 100644 --- a/packages/create-react-native-library/templates/common/$package.json +++ b/packages/create-react-native-library/templates/common/$package.json @@ -72,6 +72,9 @@ "devDependencies": { "@commitlint/config-conventional": "^17.0.2", "@evilmartians/lefthook": "^1.5.0", +<% if (example === 'vanilla') { -%> + "@react-native-community/cli": "15.0.0-alpha.2", +<% } -%> "@react-native/eslint-config": "^0.73.1", "@release-it/conventional-changelog": "^5.0.0", "@types/jest": "^29.5.5", From 8725a8e2c3943a728905e2218aa932a9f310b4c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burak=20Gu=CC=88ner?= Date: Thu, 24 Oct 2024 21:26:35 +0300 Subject: [PATCH 2/3] fix: call @react-native-community/cli codegen instead of react-native --- packages/react-native-builder-bob/src/targets/codegen.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native-builder-bob/src/targets/codegen.ts b/packages/react-native-builder-bob/src/targets/codegen.ts index cff50a9e3..ecb1c04b2 100644 --- a/packages/react-native-builder-bob/src/targets/codegen.ts +++ b/packages/react-native-builder-bob/src/targets/codegen.ts @@ -33,7 +33,7 @@ export default async function build({ root, report }: Options) { } try { - await spawn('npx', ['react-native', 'codegen'], { + await spawn('npx', ['@react-native-community/cli', 'codegen'], { stdio: 'ignore', }); From 6eef301ec5e566bdb375ffe151b28e948b8a98be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Burak=20Gu=CC=88ner?= Date: Thu, 24 Oct 2024 21:48:51 +0300 Subject: [PATCH 3/3] chore: use nodejs assert instead of console assert --- packages/create-react-native-library/src/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/create-react-native-library/src/index.ts b/packages/create-react-native-library/src/index.ts index 15d8df816..b9a1ff865 100644 --- a/packages/create-react-native-library/src/index.ts +++ b/packages/create-react-native-library/src/index.ts @@ -5,6 +5,7 @@ import dedent from 'dedent'; import kleur from 'kleur'; import yargs from 'yargs'; import ora from 'ora'; +import assert from 'node:assert'; import validateNpmPackage from 'validate-npm-package-name'; import githubUsername from 'github-username'; import prompts, { type PromptObject } from './utils/prompts'; @@ -795,7 +796,7 @@ async function create(_argv: yargs.Arguments) { // We have to get read the version from the example app and put to the root package json const exampleCommunityCLIVersion = examplePackageJson.devDependencies['@react-native-community/cli']; - console.assert( + assert( exampleCommunityCLIVersion !== undefined, "The generated example app doesn't have community CLI installed" );