Clarify build instructions (#6008)
To address http://localhost:19006/profile/danabra.mov/post/3l7opdotmoc2u.
This commit is contained in:
+52
-22
@@ -1,6 +1,17 @@
|
|||||||
# Build instructions
|
# Build instructions
|
||||||
|
|
||||||
## App Build
|
## Running Web App
|
||||||
|
|
||||||
|
- `yarn`
|
||||||
|
- `yarn web`
|
||||||
|
|
||||||
|
You're all set!
|
||||||
|
|
||||||
|
## iOS/Android Build
|
||||||
|
|
||||||
|
### Native Environment Setup
|
||||||
|
|
||||||
|
This is NOT required when developing for web.
|
||||||
|
|
||||||
- Set up your environment [using the expo instructions](https://docs.expo.dev/guides/local-app-development/).
|
- Set up your environment [using the expo instructions](https://docs.expo.dev/guides/local-app-development/).
|
||||||
- make sure that the JAVA_HOME points to the zulu-17 directory in your `.zshrc` or `.bashrc` file: `export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home`. DO NOT use another JDK or you will encounter build errors.
|
- make sure that the JAVA_HOME points to the zulu-17 directory in your `.zshrc` or `.bashrc` file: `export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home`. DO NOT use another JDK or you will encounter build errors.
|
||||||
@@ -22,18 +33,9 @@
|
|||||||
- After initial setup:
|
- After initial setup:
|
||||||
- Copy `google-services.json.example` to `google-services.json` or provide your own `google-services.json`. (A real firebase project is NOT required)
|
- Copy `google-services.json.example` to `google-services.json` or provide your own `google-services.json`. (A real firebase project is NOT required)
|
||||||
- `npx expo prebuild` -> you will also need to run this anytime `app.json` or native `package.json` deps change
|
- `npx expo prebuild` -> you will also need to run this anytime `app.json` or native `package.json` deps change
|
||||||
- `yarn intl:build` -> you will also need to run this anytime `./src/locale/{locale}/messages.po` change
|
|
||||||
- Start the dev servers
|
### Running the Native App
|
||||||
- `git clone git@github.com:bluesky-social/atproto.git`
|
|
||||||
- `cd atproto`
|
|
||||||
- `brew install pnpm`
|
|
||||||
- optional: `brew install jq`
|
|
||||||
- `pnpm i`
|
|
||||||
- `pnpm build`
|
|
||||||
- Start the docker daemon (on MacOS this entails starting the Docker Desktop app)
|
|
||||||
- Launch a Postgres database on port 5432
|
|
||||||
- `cd packages/dev-env && pnpm start`
|
|
||||||
- Run the dev app
|
|
||||||
- iOS: `yarn ios`
|
- iOS: `yarn ios`
|
||||||
- Xcode must be installed for this to run.
|
- Xcode must be installed for this to run.
|
||||||
- A simulator must be preconfigured in Xcode settings.
|
- A simulator must be preconfigured in Xcode settings.
|
||||||
@@ -54,15 +56,12 @@
|
|||||||
- In "SDK Tools": "Android SDK Build-Tools" and "Android Emulator" are required.
|
- In "SDK Tools": "Android SDK Build-Tools" and "Android Emulator" are required.
|
||||||
- Add `export ANDROID_HOME=/Users/<your_username>/Library/Android/sdk` to your `.zshrc` or `.bashrc` (and restart your terminal).
|
- Add `export ANDROID_HOME=/Users/<your_username>/Library/Android/sdk` to your `.zshrc` or `.bashrc` (and restart your terminal).
|
||||||
- Setup an emulator (Android Studio > Tools > Device Manager).
|
- Setup an emulator (Android Studio > Tools > Device Manager).
|
||||||
- Web: `yarn web`
|
- Web: `yarn web` (see the top of this file).
|
||||||
- If you are cloning or forking this repo as an open-source developer, please check the tips below as well
|
|
||||||
- Run e2e tests
|
After you do `yarn ios` and `yarn android` once, you can later just run `yarn web` and then press either `i` or `a` to open iOS and Android emulators respectively which is much faster. However, if you make native changes, you'll have to do `yarn prebuild -p ios` and `yarn prebuild -p android` and then `yarn ios` and `yarn android` again before you can continue with the same workflow.
|
||||||
- Start in various console tabs:
|
|
||||||
- `yarn e2e:mock-server`
|
### Tips
|
||||||
- `yarn e2e:metro`
|
|
||||||
- Run once: `yarn e2e:build`
|
|
||||||
- Each test run: `yarn e2e:run`
|
|
||||||
- Tips
|
|
||||||
- Copy the `.env.example` to `.env` and fill in any necessary tokens. (The Sentry token is NOT required; see instructions below if you want to enable Sentry.)
|
- Copy the `.env.example` to `.env` and fill in any necessary tokens. (The Sentry token is NOT required; see instructions below if you want to enable Sentry.)
|
||||||
- To run on the device, add `--device` to the command (e.g. `yarn android --device`). To build in production mode (slower build, faster app), also add `--variant release`.
|
- To run on the device, add `--device` to the command (e.g. `yarn android --device`). To build in production mode (slower build, faster app), also add `--variant release`.
|
||||||
- If you want to use Expo EAS on your own builds without ejecting from Expo, make sure to change the `owner` and `extra.eas.projectId` properties. If you do not have an Expo account, you may remove these properties.
|
- If you want to use Expo EAS on your own builds without ejecting from Expo, make sure to change the `owner` and `extra.eas.projectId` properties. If you do not have an Expo account, you may remove these properties.
|
||||||
@@ -72,6 +71,14 @@
|
|||||||
- For instance, the locally-hosted dev-wallet will need `adb reverse tcp:3001 tcp:3001`
|
- For instance, the locally-hosted dev-wallet will need `adb reverse tcp:3001 tcp:3001`
|
||||||
- For some reason, the typescript compiler chokes on platform-specific files (e.g. `foo.native.ts`) but only when compiling for Web thus far. Therefore we always have one version of the file that doesn't use a platform specifier, and that should be the Web version. ([More info](https://stackoverflow.com/questions/44001050/platform-specific-import-component-in-react-native-with-typescript).)
|
- For some reason, the typescript compiler chokes on platform-specific files (e.g. `foo.native.ts`) but only when compiling for Web thus far. Therefore we always have one version of the file that doesn't use a platform specifier, and that should be the Web version. ([More info](https://stackoverflow.com/questions/44001050/platform-specific-import-component-in-react-native-with-typescript).)
|
||||||
|
|
||||||
|
### Running E2E Tests
|
||||||
|
|
||||||
|
- Start in various console tabs:
|
||||||
|
- `yarn e2e:mock-server`
|
||||||
|
- `yarn e2e:metro`
|
||||||
|
- Run once: `yarn e2e:build`
|
||||||
|
- Each test run: `yarn e2e:run`
|
||||||
|
|
||||||
### Adding Sentry
|
### Adding Sentry
|
||||||
|
|
||||||
Adding Sentry is NOT required. You can keep `SENTRY_AUTH_TOKEN=` in `.env` which will build the app without Sentry.
|
Adding Sentry is NOT required. You can keep `SENTRY_AUTH_TOKEN=` in `.env` which will build the app without Sentry.
|
||||||
@@ -80,8 +87,31 @@ However, if you're a part of the Bluesky team and want to enable Sentry, fill in
|
|||||||
|
|
||||||
If you change `SENTRY_AUTH_TOKEN`, you need to do `yarn prebuild` before running `yarn ios` or `yarn android` again.
|
If you change `SENTRY_AUTH_TOKEN`, you need to do `yarn prebuild` before running `yarn ios` or `yarn android` again.
|
||||||
|
|
||||||
|
### Adding and Updating Locales
|
||||||
|
|
||||||
|
- `yarn intl:build` -> you will also need to run this anytime `./src/locale/{locale}/messages.po` change
|
||||||
|
|
||||||
|
## Running the Backend Locally
|
||||||
|
|
||||||
|
This is NOT required for app development but if you also want to develop the Bluesky *backend* locally too, you'll need this.
|
||||||
|
|
||||||
|
- Start the dev servers
|
||||||
|
- `git clone git@github.com:bluesky-social/atproto.git`
|
||||||
|
- `cd atproto`
|
||||||
|
- `brew install pnpm`
|
||||||
|
- optional: `brew install jq`
|
||||||
|
- `pnpm i`
|
||||||
|
- `pnpm build`
|
||||||
|
- Start the docker daemon (on MacOS this entails starting the Docker Desktop app)
|
||||||
|
- Launch a Postgres database on port 5432
|
||||||
|
- `cd packages/dev-env && pnpm start`
|
||||||
|
|
||||||
|
Then, when logging in or creating an account, point it to the localhost port of the devserver.
|
||||||
|
|
||||||
## Go-Server Build
|
## Go-Server Build
|
||||||
|
|
||||||
|
The Go server in this repository is only used for serving the web app in production. Usually you won't need to touch it.
|
||||||
|
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
- [Go](https://go.dev/)
|
- [Go](https://go.dev/)
|
||||||
|
|||||||
Reference in New Issue
Block a user