From 86032f3105e659dc28b35c068b42737f041029a0 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Tue, 12 Dec 2023 13:11:02 +0100 Subject: [PATCH 1/9] fix: get commands options and description from new package --- packages/repack/commands.js | 32 +++++++++++--------------------- 1 file changed, 11 insertions(+), 21 deletions(-) diff --git a/packages/repack/commands.js b/packages/repack/commands.js index 2ebdebf3a..83c394b47 100644 --- a/packages/repack/commands.js +++ b/packages/repack/commands.js @@ -1,43 +1,33 @@ const path = require('path'); -const { createRequire } = require('module'); function getReactNativeCliPath() { let cliPath; - try { - cliPath = path.dirname(require.resolve('@react-native-community/cli')); - } catch { - // NOOP - } - try { cliPath = path.dirname( - require.resolve('react-native/node_modules/@react-native-community/cli') + require.resolve('@react-native/community-cli-plugin') ); } catch { // NOOP } - try { - const rnRequire = createRequire(require.resolve('react-native')); - cliPath = path.dirname(rnRequire.resolve('@react-native-community/cli')); - } catch { - // NOOP - } - if (!cliPath) { - throw new Error('Cannot resolve @react-native-community/cli package'); + throw new Error( + 'Cannot resolve @react-native/community-cli-plugin package' + ); } return cliPath; } -const { - projectCommands: cliCommands, -} = require(`${getReactNativeCliPath()}/commands`); +const cliCommands = require(getReactNativeCliPath()); -const startCommand = cliCommands.find((command) => command.name === 'start'); -const bundleCommand = cliCommands.find((command) => command.name === 'bundle'); +const startCommand = Object.values(cliCommands).find( + (command) => command.name === 'start' +); +const bundleCommand = Object.values(cliCommands).find( + (command) => command.name === 'bundle' +); const webpackConfigOption = { name: '--webpackConfig ', From 18cc7438f2afd4210f65e8a2d56bb4845acad420 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Tue, 12 Dec 2023 13:16:06 +0100 Subject: [PATCH 2/9] chore: add changset --- .changeset/eighty-elephants-report.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/eighty-elephants-report.md diff --git a/.changeset/eighty-elephants-report.md b/.changeset/eighty-elephants-report.md new file mode 100644 index 000000000..c67dc9ff3 --- /dev/null +++ b/.changeset/eighty-elephants-report.md @@ -0,0 +1,5 @@ +--- +"@callstack/repack": minor +--- + +fix: get commands options and description from new package From 8552073dfeea3ade8bce489f9868c5749c9191b7 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Tue, 12 Dec 2023 14:40:07 +0100 Subject: [PATCH 3/9] fix: keep backward compatability --- packages/repack/commands.js | 45 ++++++++++++++++++++++++++++++------- 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/packages/repack/commands.js b/packages/repack/commands.js index 83c394b47..fbcd08e50 100644 --- a/packages/repack/commands.js +++ b/packages/repack/commands.js @@ -1,26 +1,55 @@ const path = require('path'); +const { createRequire } = require('module'); -function getReactNativeCliPath() { +function getCommands() { let cliPath; + try { + cliPath = path.dirname(require.resolve('@react-native-community/cli')); + } catch { + // NOOP + } + try { cliPath = path.dirname( - require.resolve('@react-native/community-cli-plugin') + require.resolve('react-native/node_modules/@react-native-community/cli') ); } catch { // NOOP } - if (!cliPath) { - throw new Error( - 'Cannot resolve @react-native/community-cli-plugin package' - ); + try { + const rnRequire = createRequire(require.resolve('react-native')); + cliPath = path.dirname(rnRequire.resolve('@react-native-community/cli')); + } catch { + // NOOP + } + + const { projectCommands } = require(`${cliPath}/commands`); + const commandNames = Object.values(projectCommands).map(({ name }) => name); + + if (commandNames.includes('bundle') && commandNames.includes('start')) { + return projectCommands; + } + + let commands; + + try { + commands = require(require.resolve( + 'react-native/react-native.config.js' + )).commands; + } catch (e) { + // NOOP + } + + if (!commands) { + throw new Error('Cannot resolve path react-native package'); } - return cliPath; + return commands; } -const cliCommands = require(getReactNativeCliPath()); +const cliCommands = getCommands(); const startCommand = Object.values(cliCommands).find( (command) => command.name === 'start' From bf9d1fb44a9369e2fc82d13c3b899d76abed693f Mon Sep 17 00:00:00 2001 From: Szymon Rybczak Date: Fri, 15 Dec 2023 07:14:47 +0100 Subject: [PATCH 4/9] Update packages/repack/commands.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jakub Romańczyk --- packages/repack/commands.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/repack/commands.js b/packages/repack/commands.js index fbcd08e50..d1172be04 100644 --- a/packages/repack/commands.js +++ b/packages/repack/commands.js @@ -43,7 +43,7 @@ function getCommands() { } if (!commands) { - throw new Error('Cannot resolve path react-native package'); + throw new Error('Cannot resolve path to react-native package'); } return commands; From 3d5a582e47b2da881a517c487c50cd658f3dfdf3 Mon Sep 17 00:00:00 2001 From: Szymon Rybczak Date: Fri, 15 Dec 2023 07:15:11 +0100 Subject: [PATCH 5/9] Update packages/repack/commands.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jakub Romańczyk --- packages/repack/commands.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/repack/commands.js b/packages/repack/commands.js index d1172be04..a0635e7da 100644 --- a/packages/repack/commands.js +++ b/packages/repack/commands.js @@ -49,7 +49,7 @@ function getCommands() { return commands; } -const cliCommands = getCommands(); +const cliCommands = Object.values(getCommands()); const startCommand = Object.values(cliCommands).find( (command) => command.name === 'start' From b0461eeb52fd4f564a2aee3316605413609e2d09 Mon Sep 17 00:00:00 2001 From: Szymon Rybczak Date: Fri, 15 Dec 2023 07:15:21 +0100 Subject: [PATCH 6/9] Update packages/repack/commands.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jakub Romańczyk --- packages/repack/commands.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/repack/commands.js b/packages/repack/commands.js index a0635e7da..d9bb2f5b1 100644 --- a/packages/repack/commands.js +++ b/packages/repack/commands.js @@ -51,10 +51,10 @@ function getCommands() { const cliCommands = Object.values(getCommands()); -const startCommand = Object.values(cliCommands).find( +const startCommand = cliCommands.find( (command) => command.name === 'start' ); -const bundleCommand = Object.values(cliCommands).find( +const bundleCommand = cliCommands.find( (command) => command.name === 'bundle' ); From 291ee931b14b09b55d3b7b30492a370ff77cce00 Mon Sep 17 00:00:00 2001 From: szymonrybczak Date: Fri, 15 Dec 2023 07:21:37 +0100 Subject: [PATCH 7/9] fix: linter --- packages/repack/commands.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/repack/commands.js b/packages/repack/commands.js index d9bb2f5b1..ad5a0ef43 100644 --- a/packages/repack/commands.js +++ b/packages/repack/commands.js @@ -51,12 +51,8 @@ function getCommands() { const cliCommands = Object.values(getCommands()); -const startCommand = cliCommands.find( - (command) => command.name === 'start' -); -const bundleCommand = cliCommands.find( - (command) => command.name === 'bundle' -); +const startCommand = cliCommands.find(({ name }) => name === 'start'); +const bundleCommand = cliCommands.find(({ name }) => name === 'bundle'); const webpackConfigOption = { name: '--webpackConfig ', From 0842953525b28e927d37b50fb2191e22e745e138 Mon Sep 17 00:00:00 2001 From: Jakub Romanczyk Date: Mon, 18 Dec 2023 11:30:36 +0100 Subject: [PATCH 8/9] chore(repack): document the changes --- packages/repack/commands.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/repack/commands.js b/packages/repack/commands.js index ad5a0ef43..3574818a5 100644 --- a/packages/repack/commands.js +++ b/packages/repack/commands.js @@ -32,6 +32,7 @@ function getCommands() { return projectCommands; } + // RN >= 0.73 let commands; try { From c019a754737cd519ffa5ccc7230bf42abcca9b05 Mon Sep 17 00:00:00 2001 From: Jakub Romanczyk Date: Mon, 18 Dec 2023 11:36:17 +0100 Subject: [PATCH 9/9] chore: update changeset --- .changeset/eighty-elephants-report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/eighty-elephants-report.md b/.changeset/eighty-elephants-report.md index c67dc9ff3..180635cda 100644 --- a/.changeset/eighty-elephants-report.md +++ b/.changeset/eighty-elephants-report.md @@ -2,4 +2,4 @@ "@callstack/repack": minor --- -fix: get commands options and description from new package +fix: get commands options and description from new package (support RN>=0.73)