Add extensibility point on react-native-xcode.sh script
Summary: Original pull request: #12863 Useful for generating source maps, for example. Feature parity with Android, that already have this extensibility point on `build.gradle`: ``` project.ext.react = [ extraPackagerArgs: [...] ] ``` Xcode > Build Phases > Bundle React Native code and Images ``` export NODE_BINARY=node export EXTRA_PACKAGER_ARGS="--sourcemap-output ${SRCROOT}/build/main.jsbundle.map" ../node_modules/react-native/scripts/react-native-xcode.sh ``` [IOS] [FEATURE] [./react-native-xcode.sh] - Added $EXTRA_PACKAGER_ARGS extensibility point Closes https://github.com/facebook/react-native/pull/16933 Differential Revision: D6771709 Pulled By: yungsters fbshipit-source-id: a33614b45b1e3537daeb31504fdd3a402dc70ff0
This commit is contained in:
parent
bcfbdf4fbe
commit
0d4ff1b7ea
|
@ -1,129 +0,0 @@
|
|||
#!/bin/bash
|
||||
# Copyright (c) 2015-present, Facebook, Inc.
|
||||
# All rights reserved.
|
||||
#
|
||||
# This source code is licensed under the BSD-style license found in the
|
||||
# LICENSE file in the root directory of this source tree. An additional grant
|
||||
# of patent rights can be found in the PATENTS file in the same directory.
|
||||
|
||||
# Bundle React Native app's code and image assets.
|
||||
# This script is supposed to be invoked as part of Xcode build process
|
||||
# and relies on environment variables (including PWD) set by Xcode
|
||||
|
||||
if [[ "$SKIP_BUNDLING" ]]; then
|
||||
echo "SKIP_BUNDLING enabled; skipping."
|
||||
exit 0;
|
||||
fi
|
||||
|
||||
case "$CONFIGURATION" in
|
||||
*Debug*)
|
||||
if [[ "$PLATFORM_NAME" == *simulator ]]; then
|
||||
if [[ "$FORCE_BUNDLING" ]]; then
|
||||
echo "FORCE_BUNDLING enabled; continuing to bundle."
|
||||
else
|
||||
echo "Skipping bundling in Debug for the Simulator (since the packager bundles for you). Use the FORCE_BUNDLING flag to change this behavior."
|
||||
exit 0;
|
||||
fi
|
||||
else
|
||||
echo "Bundling for physical device. Use the SKIP_BUNDLING flag to change this behavior."
|
||||
fi
|
||||
|
||||
DEV=true
|
||||
;;
|
||||
"")
|
||||
echo "$0 must be invoked by Xcode"
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
DEV=false
|
||||
;;
|
||||
esac
|
||||
|
||||
# Path to react-native folder inside node_modules
|
||||
REACT_NATIVE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
|
||||
# Xcode project file for React Native apps is located in ios/ subfolder
|
||||
cd "${REACT_NATIVE_DIR}"/../..
|
||||
|
||||
# Define NVM_DIR and source the nvm.sh setup script
|
||||
[ -z "$NVM_DIR" ] && export NVM_DIR="$HOME/.nvm"
|
||||
|
||||
# Define entry file
|
||||
if [[ -s "index.ios.js" ]]; then
|
||||
ENTRY_FILE=${1:-index.ios.js}
|
||||
else
|
||||
ENTRY_FILE=${1:-index.js}
|
||||
fi
|
||||
|
||||
if [[ -s "$HOME/.nvm/nvm.sh" ]]; then
|
||||
. "$HOME/.nvm/nvm.sh"
|
||||
elif [[ -x "$(command -v brew)" && -s "$(brew --prefix nvm)/nvm.sh" ]]; then
|
||||
. "$(brew --prefix nvm)/nvm.sh"
|
||||
fi
|
||||
|
||||
# Set up the nodenv node version manager if present
|
||||
if [[ -x "$HOME/.nodenv/bin/nodenv" ]]; then
|
||||
eval "$("$HOME/.nodenv/bin/nodenv" init -)"
|
||||
fi
|
||||
|
||||
[ -z "$NODE_BINARY" ] && export NODE_BINARY="node"
|
||||
|
||||
[ -z "$CLI_PATH" ] && export CLI_PATH="$REACT_NATIVE_DIR/local-cli/cli.js"
|
||||
|
||||
[ -z "$BUNDLE_COMMAND" ] && BUNDLE_COMMAND="bundle"
|
||||
|
||||
if [[ -z "$BUNDLE_CONFIG" ]]; then
|
||||
CONFIG_ARG=""
|
||||
else
|
||||
CONFIG_ARG="--config $(pwd)/$BUNDLE_CONFIG"
|
||||
fi
|
||||
|
||||
nodejs_not_found()
|
||||
{
|
||||
echo "error: Can't find '$NODE_BINARY' binary to build React Native bundle" >&2
|
||||
echo "If you have non-standard nodejs installation, select your project in Xcode," >&2
|
||||
echo "find 'Build Phases' - 'Bundle React Native code and images'" >&2
|
||||
echo "and change NODE_BINARY to absolute path to your node executable" >&2
|
||||
echo "(you can find it by invoking 'which node' in the terminal)" >&2
|
||||
exit 2
|
||||
}
|
||||
|
||||
type $NODE_BINARY >/dev/null 2>&1 || nodejs_not_found
|
||||
|
||||
# Print commands before executing them (useful for troubleshooting)
|
||||
set -x
|
||||
DEST=$CONFIGURATION_BUILD_DIR/$UNLOCALIZED_RESOURCES_FOLDER_PATH
|
||||
|
||||
if [[ "$CONFIGURATION" = "Debug" && ! "$PLATFORM_NAME" == *simulator ]]; then
|
||||
PLISTBUDDY='/usr/libexec/PlistBuddy'
|
||||
PLIST=$TARGET_BUILD_DIR/$INFOPLIST_PATH
|
||||
IP=$(ipconfig getifaddr en0)
|
||||
if [ -z "$IP" ]; then
|
||||
IP=$(ifconfig | grep 'inet ' | grep -v ' 127.' | cut -d\ -f2 | awk 'NR==1{print $1}')
|
||||
fi
|
||||
|
||||
if [ -z ${DISABLE_XIP+x} ]; then
|
||||
IP="$IP.xip.io"
|
||||
fi
|
||||
|
||||
$PLISTBUDDY -c "Add NSAppTransportSecurity:NSExceptionDomains:localhost:NSTemporaryExceptionAllowsInsecureHTTPLoads bool true" "$PLIST"
|
||||
$PLISTBUDDY -c "Add NSAppTransportSecurity:NSExceptionDomains:$IP:NSTemporaryExceptionAllowsInsecureHTTPLoads bool true" "$PLIST"
|
||||
echo "$IP" > "$DEST/ip.txt"
|
||||
fi
|
||||
|
||||
BUNDLE_FILE="$DEST/main.jsbundle"
|
||||
|
||||
$NODE_BINARY $CLI_PATH $BUNDLE_COMMAND \
|
||||
$CONFIG_ARG \
|
||||
--entry-file "$ENTRY_FILE" \
|
||||
--platform ios \
|
||||
--dev $DEV \
|
||||
--reset-cache \
|
||||
--bundle-output "$BUNDLE_FILE" \
|
||||
--assets-dest "$DEST"
|
||||
|
||||
if [[ $DEV != true && ! -f "$BUNDLE_FILE" ]]; then
|
||||
echo "error: File $BUNDLE_FILE does not exist. This must be a bug with" >&2
|
||||
echo "React Native, please report it here: https://github.com/facebook/react-native/issues"
|
||||
exit 2
|
||||
fi
|
Loading…
Reference in New Issue