mirror of
https://github.com/status-im/react-native.git
synced 2025-01-10 09:35:48 +00:00
6e99e314b2
Summary: This change (initially discussed in https://github.com/react-community/create-react-native-app/issues/26) moves the HelloWorld project template from two nearly identical entry points (`index.android.js` and `index.ios.js`) to a single, minimal `index.js` entry point. The root component is created in `App.js`. This unifies the project structure between `react-native init` and Create React Native App and allows CRNA's eject to use the entry point from the HelloWorld template without any hacks to customize it. Also examples in the docs can be just copy-pasted to `App.js` the same way in both HelloWorld and CRNA apps without having to first learn about `AppRegistry.registerComponent`. * Created a new project from the template using `./scripts/test-manual-e2e.sh` and verified that: * The app builds, starts and runs both on Android and iOS. * Editing and reloading changes works. * The new files (`index.js`, `App.js`, `__tests__/App.js`) get created in the project folder. <img width="559" alt="screen shot 2017-08-01 at 19 10 51" src="https://user-images.githubusercontent.com/497214/28835171-300a12b6-76ed-11e7-81b2-623639c3b8f6.png"> <img width="467" alt="screen shot 2017-08-01 at 19 09 12" src="https://user-images.githubusercontent.com/497214/28835180-33d285e0-76ed-11e7-8d68-2b3bc44bf585.png"> <!-- Thank you for sending the PR! If you changed any code, please provide us with clear instructions on how you verified your changes work. In other words, a test plan is *required*. Bonus points for screenshots and videos! Please read the Contribution Guidelines at https://github.com/facebook/react-native/blob/master/CONTRIBUTING.md to learn more about contributing to React Native. Happy contributing! --> Closes https://github.com/facebook/react-native/pull/15312 Differential Revision: D5556276 Pulled By: hramos fbshipit-source-id: 068fdf7e51381c2bc50321522f2be0db47296c5e
113 lines
3.2 KiB
Bash
Executable File
113 lines
3.2 KiB
Bash
Executable File
#! /bin/bash
|
|
|
|
JAVA_VERSION="1.7"
|
|
|
|
RED="\033[0;31m"
|
|
GREEN="\033[0;32m"
|
|
BLUE="\033[0;35m"
|
|
ENDCOLOR="\033[0m"
|
|
|
|
error() {
|
|
echo -e $RED"$@"$ENDCOLOR
|
|
exit 1
|
|
}
|
|
|
|
success() {
|
|
echo -e $GREEN"$@"$ENDCOLOR
|
|
}
|
|
|
|
info() {
|
|
echo -e $BLUE"$@"$ENDCOLOR
|
|
}
|
|
|
|
PACKAGE_VERSION=$(cat package.json \
|
|
| grep version \
|
|
| head -1 \
|
|
| awk -F: '{ print $2 }' \
|
|
| sed 's/[",]//g' \
|
|
| tr -d '[[:space:]]')
|
|
|
|
success "Preparing version $PACKAGE_VERSION"
|
|
|
|
repo_root=$(pwd)
|
|
|
|
rm -rf android
|
|
./gradlew :ReactAndroid:installArchives || error "Couldn't generate artifacts"
|
|
|
|
success "Generated artifacts for Maven"
|
|
|
|
npm install
|
|
|
|
success "Killing any running packagers"
|
|
lsof -i :8081 | grep LISTEN
|
|
lsof -i :8081 | grep LISTEN | /usr/bin/awk '{print $2}' | xargs kill
|
|
|
|
info "Start the packager in another terminal by running 'npm start' from the root"
|
|
info "and then press any key."
|
|
info ""
|
|
read -n 1
|
|
|
|
./gradlew :RNTester:android:app:installDebug || error "Couln't build RNTester Android"
|
|
|
|
info "Press any key to run RNTester in an already running Android emulator/device"
|
|
info ""
|
|
read -n 1
|
|
adb shell am start -n com.facebook.react.uiapp/.RNTesterActivity
|
|
|
|
info "Press any key to open the project in Xcode, then build and test manually."
|
|
info ""
|
|
read -n 1
|
|
open "RNTester/RNTester.xcodeproj"
|
|
|
|
info "When done testing RNTester app on iOS and Android press any key to continue."
|
|
info ""
|
|
read -n 1
|
|
|
|
success "Killing packager"
|
|
lsof -i :8081 | grep LISTEN
|
|
lsof -i :8081 | grep LISTEN | /usr/bin/awk '{print $2}' | xargs kill
|
|
|
|
npm pack
|
|
|
|
PACKAGE=$(pwd)/react-native-$PACKAGE_VERSION.tgz
|
|
success "Package bundled ($PACKAGE)"
|
|
|
|
project_name="RNTestProject"
|
|
|
|
cd /tmp/
|
|
rm -rf "$project_name"
|
|
react-native init "$project_name" --version $PACKAGE
|
|
|
|
info "Double checking the versions in package.json are correct:"
|
|
grep "\"react-native\": \".*react-native-$PACKAGE_VERSION.tgz\"" "/tmp/${project_name}/package.json" || error "Incorrect version number in /tmp/${project_name}/package.json"
|
|
grep -E "com.facebook.react:react-native:\\+" "${project_name}/android/app/build.gradle" || error "Dependency in /tmp/${project_name}/android/app/build.gradle must be com.facebook.react:react-native:+"
|
|
|
|
success "New sample project generated at /tmp/${project_name}"
|
|
|
|
info "Test the following on Android:"
|
|
info " - Disable Hot Reloading. It might be enabled from last time (the setting is stored on the device)"
|
|
info " - Verify 'Reload JS' works"
|
|
info ""
|
|
info "Press any key to run the sample in Android emulator/device"
|
|
info ""
|
|
read -n 1
|
|
cd "/tmp/${project_name}" && react-native run-android
|
|
|
|
info "Test the following on iOS:"
|
|
info " - Disable Hot Reloading. It might be enabled from last time (the setting is stored on the device)"
|
|
info " - Verify 'Reload JS' works"
|
|
info " - Test Chrome debugger by adding breakpoints and reloading JS. We don't have tests for Chrome debugging."
|
|
info " - Disable Chrome debugging."
|
|
info " - Enable Hot Reloading, change a file (index.js) and save. The UI should refresh."
|
|
info " - Disable Hot Reloading."
|
|
info ""
|
|
info "Press any key to open the project in Xcode"
|
|
info ""
|
|
read -n 1
|
|
open "/tmp/${project_name}/ios/${project_name}.xcodeproj"
|
|
|
|
cd "$repo_root"
|
|
|
|
info "Next steps:"
|
|
info " - https://github.com/facebook/react-native/blob/master/Releases.md"
|