The purpose of this repository is to make it easier for people to contribute to Expo.
A small, work in progress, test suite is available in apps/test-suite. It is configured to use the local copy of expo-sdk in libraries/expo-sdk.
An empty project in apps/playground is configured in the same way and is a place for you to experiment with the ipi that you're working on.
- First, make sure you have Node >= v7.9.0 installed.
- Clone this repository
git clone [email protected]:expo/expo-dev.git
npm install -g hyperinstall
- Run
./tools/setup
-- this will get the latest version of each package, then build and link xdl and start the packager for Expo home. - Follow these steps to run the Expo client on Android or these steps to run it on iOS.
- Once you have the iOS or Android client running, cd into
apps/test-suite/__develop__
and runexp start
- Open the test-suite app using the client that you built.
Note: for CI reasons you need to use the __develop__
directory with
test-suite. apps/playground
doesn't have a __develop__
directory,
run exp start
in the project root instead.
We use prettier with eslint to keep code formatted nicely. The .eslintrc
in root is the one we use for every project -- I use Visual Studio Code
with the dbaeumer.vscode-eslint
plugin and configure it to point to
my .eslintrc with:
{
"eslint.options": {
"configFile": "/Users/brent/expo-dev/.eslintrc"
}
}
It's up to you whether you want to format on save or not, but please format JS changes before submitting a PR.
Be sure to have followed the set up steps above before continuing here.
- Pull the latest version of each submodule
git submodule update --init --recursive --remote
-- you may need to go into a few --directories and clear the index. Run./tools/npm-hyperinstall
again. - Get the client running for the platform that you want to work on.
- Make native changes in the ios/Exponent/Versioned directory for iOS and android/expoview/src/main/java/versioned directory for Android.
- Re-build the app and open up playground or test-suite.
- Make the changes in
libraries/expo-sdk
to use the native APIs that you exposed before.