#!/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 envoronment variables (including PWD) set by Xcode # There is no point in creating an offline package for simulator builds # because the packager is supposed to be running during development anyways if [[ "$PLATFORM_NAME" = "iphonesimulator" ]]; then echo "Skipping bundling for Simulator platform" exit 0; fi case "$CONFIGURATION" in Debug) 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 .. # Define NVM_DIR and source the nvm.sh setup script [ -z "$NVM_DIR" ] && export NVM_DIR="$HOME/.nvm" 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" 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 $NODE_BINARY $REACT_NATIVE_DIR/local-cli/cli.js bundle \ --entry-file index.ios.js \ --platform ios \ --dev $DEV \ --bundle-output "$DEST/main.jsbundle" \ --assets-dest "$DEST"