-
Notifications
You must be signed in to change notification settings - Fork 24.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(ios): allow for custom project dir in react-native-xcode script #35449
Conversation
Hi @itxch! Thank you for your pull request and welcome to our community. Action RequiredIn order to merge any pull request (code, docs, etc.), we require contributors to sign our Contributor License Agreement, and we don't seem to have one on file for you. ProcessIn order for us to review and merge your suggested changes, please sign at https://code.facebook.com/cla. If you are contributing on behalf of someone else (eg your employer), the individual CLA may not be sufficient and your employer may need to sign the corporate CLA. Once the CLA is signed, our tooling will perform checks and validations. Afterwards, the pull request will be tagged with If you have received this in error or have any questions, please contact us at cla@meta.com. Thanks! |
Base commit: 6003e70 |
Base commit: 6003e70 |
PR build artifact for 62bbc96 is ready. |
PR build artifact for 62bbc96 is ready. |
Thank you for signing our Contributor License Agreement. We can now accept your code for this (and any) Meta Open Source project. Thanks! |
Thank you for signing our Contributor License Agreement. We can now accept your code for this (and any) Meta Open Source project. Thanks! |
Hi @itxch, I recently got something merged in regards to fixing our monorepo setup and it was resolved with this merge here: 4d7ddd4 What I find interesting about this PR is the When I see When I see you are using that to just compound onto Since I think the only change we might need here is just an easier documented source of why you would change |
Thanks for the reply @iBotPeaches
Thanks :) coming from the react web world, I love
I didn't realise that |
Was able to easily set PROJECT_DIR in Will update PR to just have some documentation around this - I'd say a comment in the Thoughts @iBotPeaches |
Sounds like a plan. Glad it worked out |
@cipolleschi has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
Thank you so much for taking care of this. We would like to end up in a world where it's very easy to configure React Native and this PR goes in that direction! :D I imported the PR to keep an eye on it, but I agree with the suggested changes. I'll wait to land it until those are carried out. |
Updated the PR: react-native/packages/rn-tester/.xcode.env Lines 13 to 16 in 7db8204
To be honest line 16 could probably be uncommented, as its a good default I feel like. Whats your thoughts? |
PR build artifact for 7db8204 is ready. |
PR build artifact for 7db8204 is ready. |
Jumping on this as Riccardo is off for some days. |
Sure, we can keep it commented - its only required for monorepos |
@cortinico has imported this pull request. If you are a Meta employee, you can view this diff on Phabricator. |
This pull request was successfully merged by @itxch in 436da18. When will my fix make it into a release? | Upcoming Releases |
…acebook#35449) Summary: The `react-native-xcode` script assumes the that `node_modules` folder are in the same location as the react native project. This adds the ability to declare `CUSTOM_DIR` in `.xcode.env` file to let react-native-xcode know where the react native project is located - required for monorepos ## Issue At the moment if a project is not using the default react native file structure then when trying to create a build or archive using Xcode it will fail, with the following error: > File /Users/itxch/Library/Developer/Xcode/DerivedData/app-evgjukoxhuupzzdglopjnhcntvpw/Build/Intermediates.noindex/ArchiveIntermediates/jungul/BuildProductsPath/Release-iphoneos/app.app/main.jsbundle does not exist. This must be a bug with React Native, please report it here: https://github.com/facebook/react-native/issues ## Background My project is a monorepo, using `npm` workspaces. #### This is the relevant file structure ![files](https://user-images.githubusercontent.com/54910400/203641210-596ee866-9f9f-429c-8bae-62d0f3afc623.png) This file structure is incompatible with line 63 of `react-native-xcode.sh` https://github.com/facebook/react-native/blob/c5a8425fada10b715f356731426db666975569c9/scripts/react-native-xcode.sh#L63 Note: `$REACT_NATIVE_DIR` is the `react-native` package directory inside node modules. So by default this sets project root to be the parent folder of the `node_modules` folder. However in my case this is not correct, it should actually be: ```sh PROJECT_ROOT=${PROJECT_ROOT:-"$REACT_NATIVE_DIR/../../app"} ``` ## Solution Seeing as hardcoding the value would not work, the simplest solution is to set the directory via a variable ```sh PROJECT_ROOT=${PROJECT_ROOT:-"$REACT_NATIVE_DIR/../../$CUSTOM_DIR"} ``` `$CUSTOM_DIR` can easily be set via `.xcode.env` file. ## Changelog [IOS] [Added] - allow for custom project dir in react-native-xcode script Pull Request resolved: facebook#35449 Test Plan: After updating my `.xcode.env` file to include `export CUSTOM_DIR=app`, I can successfully create a build or an archive. If the variable is not set it will be black, so it will not effect `$PROJECT_ROOT` Reviewed By: GijsWeterings Differential Revision: D41529396 Pulled By: cortinico fbshipit-source-id: 890e9867e31f83a08561df8c2de1069e771726fc
Summary
The
react-native-xcode
script assumes the thatnode_modules
folder are in the same location as the react native project. This adds the ability to declareCUSTOM_DIR
in.xcode.env
file to let react-native-xcode know where the react native project is located - required for monoreposIssue
At the moment if a project is not using the default react native file structure then when trying to create a build or archive using Xcode it will fail, with the following error:
Background
My project is a monorepo, using
npm
workspaces.This is the relevant file structure
This file structure is incompatible with line 63 of
react-native-xcode.sh
react-native/scripts/react-native-xcode.sh
Line 63 in c5a8425
Note:
$REACT_NATIVE_DIR
is thereact-native
package directory inside node modules.So by default this sets project root to be the parent folder of the
node_modules
folder. However in my case this is not correct, it should actually be:PROJECT_ROOT=${PROJECT_ROOT:-"$REACT_NATIVE_DIR/../../app"}
Solution
Seeing as hardcoding the value would not work, the simplest solution is to set the directory via a variable
PROJECT_ROOT=${PROJECT_ROOT:-"$REACT_NATIVE_DIR/../../$CUSTOM_DIR"}
$CUSTOM_DIR
can easily be set via.xcode.env
file.Changelog
[IOS] [Added] - allow for custom project dir in react-native-xcode script
Test Plan
After updating my
.xcode.env
file to includeexport CUSTOM_DIR=app
, I can successfully create a build or an archive.If the variable is not set it will be black, so it will not effect
$PROJECT_ROOT