fix(macos-init): add --legacy-peer-deps to npm install command#2785
Open
ludwig-pro wants to merge 1 commit intomicrosoft:mainfrom
Open
fix(macos-init): add --legacy-peer-deps to npm install command#2785ludwig-pro wants to merge 1 commit intomicrosoft:mainfrom
ludwig-pro wants to merge 1 commit intomicrosoft:mainfrom
Conversation
npm 7+ enforces strict peer dependency checking by default. When react-native-macos declares an exact peer dependency (e.g., react-native@0.79.6) but the user has a newer patch version installed (e.g., react-native@0.79.7), npm refuses to install the package. Adding --legacy-peer-deps makes npm behave like npm 6, ignoring peer dependency version mismatches. This is safe for patch version differences which are backward-compatible by semver convention. This fixes the installation error: Command failed: npm install --save --silent "react-native-macos@^0.79.0-0"
Collaborator
|
Sorry for the delay! We were working very hard on getting 0.81 out the door and I hadn't looked at other PRs. The strict peer dep is intentional, it's what we use to determine the right version of Hermes to use. So I'm not sure I want to take this fix but also I need to think about what we need to do to our unit flow to fix 🤔 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR fixes the installation failure when running
npx react-native-macos-initon projects with newer patch versions of React Native.Problem
When following the official Getting Started guide:
npx @react-native-community/cli init myProject --version 0.79 cd myProject npx react-native-macos-initThe last command fails with:
Root Cause
react-native-macos@0.79.1declares an exact peer dependency:"react-native": "0.79.6"react-native@0.79.7)--silentflag hides the actual error message, making debugging difficultSolution
Add
--legacy-peer-depsto the npm install command. This flag:Changes
packages/react-native-macos-init/src/cli.ts: Added--legacy-peer-depsflag to the npm install commandTest Plan
npx @react-native-community/cli init TestApp --version 0.79react-native@0.79.7(or newer patch) is installednpx react-native-macos-initwith this fixRelated
I'll open a separate issue to discuss using a caret range (
^0.79.0) instead of exact versions for the react-native peer dependency in release branches.