Switch from Yarn/Node.js to bun for faster dev install (#704)

* refactor: change from yarn to bun for package management

* feat: change workflows all to bun instead of node/yarn.

* refactor: change from node repl to bun repl

* fix: re-add nodejs as an applicable engine to package.json

* fix: remove bun.lock from hash in android-build workflow

---------

Co-authored-by: Ritesh Shukla <riteshshukla2381@gmail.com>
This commit is contained in:
Brys
2025-11-23 17:31:24 -06:00
committed by GitHub
parent 5b6be05910
commit 9d2e10e996
17 changed files with 3027 additions and 10204 deletions

View File

@@ -1,12 +1,12 @@
name: Build Android APK
on:
on:
pull_request:
paths:
- '.github/workflows/build-android.yml'
- 'android/**'
- 'package.json'
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
@@ -18,12 +18,11 @@ jobs:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: 🖥 Setup Node 20
uses: actions/setup-node@v4
- name: 🖥 Setup Bun 1.3.2
uses: oven-sh/setup-bun@v2
with:
node-version: 20
cache: 'yarn'
bun-version: 1.3.2
- name: 💎 Set up Ruby
uses: ruby/setup-ruby@v1
with:
@@ -31,8 +30,8 @@ jobs:
bundler-cache: true
- name: 💬 Echo package.json version to Github ENV
run: echo VERSION_NUMBER=$(node -p -e "require('./package.json').version") >> $GITHUB_ENV
run: echo VERSION_NUMBER=$(bun -p "require('./package.json').version") >> $GITHUB_ENV
- name: 🔑 Decode and setup release keystore
continue-on-error: true
run: |
@@ -42,31 +41,31 @@ jobs:
else
echo "No keystore secret found, will use debug keystore"
fi
- uses: actions/cache@v3
with:
path: |
path: |
node_modules
~/.gradle/caches
~/.gradle/wrapper
~/.cache/turbo
android/.gradle
android/app/build
key: ${{ runner.os }}-gradle-turbo-${{ hashFiles('**/yarn.lock', '**/build.gradle') }}
key: ${{ runner.os }}-gradle-turbo-${{ hashFiles('**/build.gradle') }}
restore-keys: |
${{ runner.os }}-gradle-turbo-
- name: 🤖 Run yarn init-android
run: yarn install --network-concurrency 1
- name: 🤖 Run bun init-android
run: bun i
- name: 🚀 Run turbo build
run: yarn android-build
run: bun android-build
env:
KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
- name: 📦 Upload APK for testing
uses: actions/upload-artifact@v4

View File

@@ -16,20 +16,19 @@ jobs:
- name: 🧾 Checkout repository
uses: actions/checkout@v4
- name: ⚙️ Setup Node.js
uses: actions/setup-node@v4
- name: 🖥 Setup Bun 1.3.2
uses: oven-sh/setup-bun@v2
with:
node-version: '20'
cache: 'yarn'
bun-version: 1.3.2
- name: 📦 Install dependencies
run: yarn install --network-concurrency 1
run: bun i
- name: 🧩 Build JS bundle for iOS
run: |
mkdir -p ios/build
npx react-native bundle \
bun x react-native bundle \
--platform ios \
--dev false \
--entry-file index.js \
@@ -40,12 +39,9 @@ jobs:
run: |
mkdir -p android/app/src/main/assets
mkdir -p android/app/src/main/res
npx react-native bundle \
bun x react-native bundle \
--platform android \
--dev false \
--entry-file index.js \
--bundle-output android/app/src/main/assets/index.android.bundle \
--assets-dest android/app/src/main/res

View File

@@ -1,5 +1,5 @@
name: Build iOS IPA
on:
on:
workflow_dispatch:
pull_request:
paths:
@@ -19,21 +19,21 @@ jobs:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: 🖥 Setup Node 20
uses: actions/setup-node@v4
- name: 🖥 Setup Bun 1.3.2
uses: oven-sh/setup-bun@v2
with:
node-version: 20
bun-version: 1.3.2
- name: 💬 Echo package.json version to Github ENV
run: echo VERSION_NUMBER=$(node -p -e "require('./package.json').version") >> $GITHUB_ENV
run: echo VERSION_NUMBER=$(bun -p "require('./package.json').version") >> $GITHUB_ENV
- name: 🍎 Setup Xcode
uses: ./.github/actions/setup-xcode
- name: 🍎 Run yarn init-ios:new-arch
run: yarn init-android && cd ios && bundle install && bundle exec pod install
- name: 🍎 Run bun init-ios:new-arch
run: bun run init-android && cd ios && bundle install && bundle exec pod install
- name: 🚀 Run fastlane build
run: |
cd ios
@@ -65,4 +65,4 @@ jobs:
*.zip
ios/build/Build/Products/Release-iphonesimulator/Jellify-Release-Simulator.zip
retention-days: 7
if-no-files-found: warn
if-no-files-found: warn

View File

@@ -8,7 +8,7 @@ on:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
build-android:
runs-on: macos-15
@@ -17,19 +17,18 @@ jobs:
steps:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: 🖥 Setup Node 20
uses: actions/setup-node@v4
- name: 🖥 Setup Bun 1.3.2
uses: oven-sh/setup-bun@v2
with:
node-version: 20
cache: 'yarn'
bun-version: 1.3.2
- name: 💎 Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'
ruby-version: '3.0'
bundler-cache: true
- uses: actions/cache@v3
with:
path: |
@@ -39,25 +38,25 @@ jobs:
~/.cache/turbo
android/.gradle
android/app/build
key: ${{ runner.os }}-gradle-turbo-${{ hashFiles('**/yarn.lock', '**/build.gradle') }}
key: ${{ runner.os }}-gradle-turbo-${{ hashFiles('**/bun.lock', '**/build.gradle') }}
restore-keys: |
${{ runner.os }}-gradle-turbo-
- name: 🍎 Run yarn init-android
run: yarn install --network-concurrency 1
- name: 🍎 Run bun init-android
run: bun i
- name: 💬 Disable OTA Updates and Enable Maestro Build
run: node scripts/updateEnv.js OTA_UPDATE_ENABLED=false IS_MAESTRO_BUILD=true
run: bun scripts/updateEnv.js OTA_UPDATE_ENABLED=false IS_MAESTRO_BUILD=true
- name: ✅ Validate Config Files
run: |
node -e "JSON.parse(require('fs').readFileSync('telemetrydeck.json'))"
node -e "JSON.parse(require('fs').readFileSync('glitchtip.json'))"
bun -p "JSON.parse(require('fs').readFileSync('telemetrydeck.json'))"
bun -p "JSON.parse(require('fs').readFileSync('glitchtip.json'))"
- name: 🚀 Run Android fastlane build
run: yarn android-build
run: bun run android-build
- name: 📤 Upload Android Artifacts
uses: actions/upload-artifact@v4
with:
@@ -74,10 +73,10 @@ jobs:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: 🖥 Setup Node 20
uses: actions/setup-node@v4
- name: 🖥 Setup Bun 1.3.2
uses: oven-sh/setup-bun@v2
with:
node-version: 20
bun-version: 1.3.2
- name: Installing Maestro
shell: bash
@@ -88,7 +87,7 @@ jobs:
with:
java-version: '17'
distribution: 'zulu'
- name: ⬇️ Download Android Artifacts
uses: actions/download-artifact@v4
with:
@@ -121,19 +120,19 @@ jobs:
disable-animations: false
avd-name: e2e_emulator
script: bash scripts/maestro-android-retry.sh "https://jellyfin.jellify.app" "jerry"
- name: 🗣️ Notify Success on Discord
if: success()
run: |
node scripts/sendDiscordMessage.js "__**## ✅ Maestro Test Passed**__All checks completed successfully!"
bun scripts/sendDiscordMessage.js "__**## ✅ Maestro Test Passed**__All checks completed successfully!"
env:
DISCORD_WEBHOOK_URL: ${{ secrets.MAESTRO_WEBHOOK_RESULTS }}
- name: 🗣️ Notify Failure on Discord
if: failure()
run: |
node scripts/sendDiscordMessage.js "__**## ❌ Maestro Test Failed**__Some tests did not pass."
bun scripts/sendDiscordMessage.js "__**## ❌ Maestro Test Failed**__Some tests did not pass."
env:
DISCORD_WEBHOOK_URL: ${{ secrets.MAESTRO_WEBHOOK_RESULTS }}
- name: Store tests result

View File

@@ -22,7 +22,7 @@ on:
- minor
- patch
- major
jobs:
generate-release-notes:
runs-on: ubuntu-latest
@@ -33,8 +33,8 @@ jobs:
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.SIGNING_REPO_PAT }}
token: ${{ secrets.SIGNING_REPO_PAT }}
- name: 🧠 Collect commit messages
id: commits
run: |
@@ -54,10 +54,10 @@ jobs:
} >> "$GITHUB_OUTPUT"
- name: 📜 Generate release notes using Node.js
- name: 📜 Generate release notes using Bun
run: |
yarn install --network-concurrency 1
node scripts/generate-release-notes.js "${{ steps.commits.outputs.messages }}"
bun i
bun scripts/generate-release-notes.js "${{ steps.commits.outputs.messages }}"
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
@@ -79,32 +79,32 @@ jobs:
uses: actions/checkout@v4
with:
token: ${{ secrets.SIGNING_REPO_PAT }}
- name: 🖥 Setup Node 20
uses: actions/setup-node@v4
- name: 🖥 Setup Bun 1.3.2
uses: oven-sh/setup-bun@v2
with:
node-version: 20
bun-version: 1.3.2
- name: 💎 Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.0'
ruby-version: '3.0'
bundler-cache: true
- name: 🍎 Run yarn init-android
run: yarn install --network-concurrency 1
- name: 🍎 Run bun init-android # you never actually run yarn init-android, so I kept the same
run: bun i
- name: Version Up
if: ${{ github.event.inputs['version-bump'] != 'No Bump' }}
run: yarn react-native bump-version --type ${{ github.event.inputs['version-bump'] }}
- id: setver
run: echo "version=$(node -p -e "require('./package.json').version")" >> $GITHUB_OUTPUT
run: bun x react-native bump-version --type ${{ github.event.inputs['version-bump'] }} # Is this supposed to be like npx, or some special yarn thing?
- id: setver
run: echo "version=$(bun -p "require('./package.json').version")" >> $GITHUB_OUTPUT
- name: 💬 Echo package.json version to Github ENV
run: echo VERSION_NUMBER=$(node -p -e "require('./package.json').version") >> $GITHUB_ENV
run: echo VERSION_NUMBER=$(bun -p "require('./package.json').version") >> $GITHUB_ENV
- name: 🔑 Setup release keystore
run: |
if [ -n "${{ secrets.ANDROID_SIGNING_BASE64 }}" ]; then
@@ -114,7 +114,7 @@ jobs:
echo "ERROR: No keystore secret found!"
exit 1
fi
- name: 🔑 Setup Play Store credentials
run: |
if [ -n "$PLAY_STORE_CREDENTIALS" ]; then
@@ -126,8 +126,8 @@ jobs:
fi
env:
PLAY_STORE_CREDENTIALS: ${{ secrets.PLAY_STORE_SERVICE_ACCOUNT }}
- name: 🤫 Output TelemetryDeck Secrets to TelemetryDeck.json
- name: 🤫 Output TelemetryDeck Secrets to TelemetryDeck.json
run: |
echo "{" > telemetrydeck.json
echo "\"appID\": \"${{ secrets.TELEMETRYDECK_APPID }}\"," >> telemetrydeck.json
@@ -135,29 +135,29 @@ jobs:
echo "\"app\": \"Jellify\"" >> telemetrydeck.json
echo "}" >> telemetrydeck.json
- name: 🤫 Output Glitchtip Secrets to Glitchtip.json
run: |
echo "{" > glitchtip.json
echo "\"dsn\": \"${{ secrets.GLITCHTIP_DSN }}\"" >> glitchtip.json
echo "}" >> glitchtip.json
- name: 📝 Output Glitchip secrets to .env
run: |
echo "GLITCHTIP_DSN=${{ secrets.GLITCHTIP_DSN }}" >> .env
- name: ✅ Validate Config Files
run: |
node -e "JSON.parse(require('fs').readFileSync('telemetrydeck.json'))"
node -e "JSON.parse(require('fs').readFileSync('glitchtip.json'))"
bun -p "JSON.parse(require('fs').readFileSync('telemetrydeck.json'))"
bun -p "JSON.parse(require('fs').readFileSync('glitchtip.json'))"
- name: 🚀 Run Android fastlane deploy
run: yarn fastlane:android:deploy
run: bun run fastlane:android:deploy
env:
KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
- name: 📤 Upload Android Artifacts
uses: actions/upload-artifact@v4
with:
@@ -172,38 +172,38 @@ jobs:
version: ${{ steps.setver.outputs.version }}
needs: [generate-release-notes]
steps:
- name: 🛒 Checkout
uses: actions/checkout@v4
with:
token: ${{ secrets.SIGNING_REPO_PAT }}
- name: 🖥 Setup Node 20
uses: actions/setup-node@v4
- name: 🖥 Setup Bun 1.3.2
uses: oven-sh/setup-bun@v2
with:
node-version: 20
bun-version: 1.3.2
- name: 🍎 Setup Xcode
uses: ./.github/actions/setup-xcode
- name: 🍎 Run yarn init-ios:new-arch
run: yarn init-ios:new-arch
- name: 🍎 Run run init-ios:new-arch
run: bun run init-ios:new-arch
- name: Version Up
if: ${{ github.event.inputs['version-bump'] != 'No Bump' }}
run: yarn react-native bump-version --type ${{ github.event.inputs['version-bump'] }}
run: bun x react-native bump-version --type ${{ github.event.inputs['version-bump'] }} # Is this supposed to be like npx, or some special yarn thing?
- id: setver
run: echo "version=$(node -p -e "require('./package.json').version")" >> $GITHUB_OUTPUT
run: echo "version=$(bun -p "require('./package.json').version")" >> $GITHUB_OUTPUT
- name: 💬 Echo package.json version to Github ENV
run: echo VERSION_NUMBER=$(node -p -e "require('./package.json').version") >> $GITHUB_ENV
run: echo VERSION_NUMBER=$(bun -p "require('./package.json').version") >> $GITHUB_ENV
- name: 🤫 Output App Store Connect API Key JSON to Fastlane
run: echo -e '${{ secrets.APPSTORE_CONNECT_API_KEY_JSON }}' > appstore_connect_api_key.json
working-directory: ./ios/fastlane
- name: 🤫 Output TelemetryDeck Secrets to TelemetryDeck.json
- name: 🤫 Output TelemetryDeck Secrets to TelemetryDeck.json
run: |
echo "{" > telemetrydeck.json
echo "\"appID\": \"${{ secrets.TELEMETRYDECK_APPID }}\"," >> telemetrydeck.json
@@ -211,24 +211,24 @@ jobs:
echo "\"app\": \"Jellify\"" >> telemetrydeck.json
echo "}" >> telemetrydeck.json
- name: 🤫 Output Glitchtip Secrets to Glitchtip.json
run: |
echo "{" > glitchtip.json
echo "\"dsn\": \"${{ secrets.GLITCHTIP_DSN }}\"" >> glitchtip.json
echo "}" >> glitchtip.json
- name: 📝 Output Glitchip secrets to .env
run: |
echo "GLITCHTIP_DSN=${{ secrets.GLITCHTIP_DSN }}" >> .env
- name: ✅ Validate Config Files
run: |
node -e "JSON.parse(require('fs').readFileSync('telemetrydeck.json'))"
node -e "JSON.parse(require('fs').readFileSync('glitchtip.json'))"
bun -p "JSON.parse(require('fs').readFileSync('telemetrydeck.json'))"
bun -p "JSON.parse(require('fs').readFileSync('glitchtip.json'))"
- name: 🚀 Run iOS fastlane build and publish to TestFlight
run: yarn fastlane:ios:beta
run: bun run fastlane:ios:beta
env:
APPSTORE_CONNECT_API_KEY_JSON: ${{ secrets.APPSTORE_CONNECT_API_KEY_JSON }}
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD: ${{ secrets.FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD }}
@@ -249,7 +249,7 @@ jobs:
- name: 🛒 Checkout Repo
uses: actions/checkout@v4
with:
token: ${{ secrets.SIGNING_REPO_PAT }}
token: ${{ secrets.SIGNING_REPO_PAT }}
- name: ❌ Fail if selected job failed
run: |
@@ -277,7 +277,7 @@ jobs:
fi
- name: 📦 Install dependencies
run: yarn install --network-concurrency 1
run: bun i
- name: ⬇️ Download Android Artifacts
if: ${{ github.event.inputs['build-platform'] == 'Android' || github.event.inputs['build-platform'] == 'Both' }}
@@ -295,8 +295,8 @@ jobs:
- name: Version Up
if: ${{ github.event.inputs['version-bump'] != 'No Bump' }}
run: yarn react-native bump-version --type ${{ github.event.inputs['version-bump'] }}
run: bun x react-native bump-version --type ${{ github.event.inputs['version-bump'] }} # Is this supposed to be like npx, or some special yarn thing?
- name: 🔢 Set artifact version numbers
run: |
VERSION=${{ needs.publish-ios.outputs.version || needs.publish-android.outputs.version }}
@@ -345,4 +345,4 @@ jobs:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
APP_VERSION: ${{ needs.publish-ios.outputs.version || needs.publish-android.outputs.version }}
release_url: ${{ steps.githubRelease.outputs.html_url }}
RELEASE_NOTES: ${{ needs.generate-release-notes.outputs.release_notes }}
RELEASE_NOTES: ${{ needs.generate-release-notes.outputs.release_notes }}

View File

@@ -16,20 +16,20 @@ jobs:
with:
token: ${{ secrets.SIGNING_REPO_PAT }}
- name: 🖥 Setup Node 20
uses: actions/setup-node@v4
- name: 🖥 Setup Bun 1.3.2
uses: oven-sh/setup-bun@v2
with:
node-version: 20
bun-version: 1.3.2
- name: 🥟 Run bun
run: bun i
- name: 🧵 Run yarn
run: yarn install --network-concurrency 1
- name: 👩‍💻 Configure Git
run: |
git config --global user.email "violet@cosmonautical.cloud"
git config --global user.name "anultravioletaurora"
- name: 🤖 Publish Android Update
run: yarn sendOTA:PR ${{ github.event.pull_request.number }}
run: bun run sendOTA:PR ${{ github.event.pull_request.number }}
env:
SIGNING_REPO_PAT: ${{ secrets.SIGNING_REPO_PAT }}

View File

@@ -1,7 +1,7 @@
name: Publish Over-the-Air Update
on:
workflow_dispatch:
jobs:
publish-ota-update:
runs-on: macos-15
@@ -11,25 +11,25 @@ jobs:
with:
token: ${{ secrets.SIGNING_REPO_PAT }}
- name: 🖥 Setup Node 20
uses: actions/setup-node@v4
- name: 🖥 Setup Bun 1.3.2
uses: oven-sh/setup-bun@v2
with:
node-version: 20
bun-version: 1.3.2
- name: 🥟 Run bun install
run: bun i
- name: 🧵 Run yarn
run: yarn install --network-concurrency 1
- name: 👩‍💻 Configure Git
run: |
git config --global user.email "violet@cosmonautical.cloud"
git config --global user.name "anultravioletaurora"
- name: 🤖 Publish Android Update
run: yarn sendOTA:android
run: bun run sendOTA:android
env:
SIGNING_REPO_PAT: ${{ secrets.SIGNING_REPO_PAT }}
- name: 🍎 Publish iOS Update
run: yarn sendOTA:iOS
run: bun run sendOTA:iOS
env:
SIGNING_REPO_PAT: ${{ secrets.SIGNING_REPO_PAT }}

View File

@@ -16,22 +16,22 @@ jobs:
- name: 🛒 Checkout
uses: actions/checkout@v4
- name: 🖥 Setup Node 20
uses: actions/setup-node@v4
- name: 🖥 Setup Bun 1.3.2
uses: oven-sh/setup-bun@v2
with:
node-version: 20
bun-version: 1.3.2
- name: 💬 Echo package.json version to Github ENV
run: echo VERSION_NUMBER=$(node -p -e "require('./package.json').version") >> $GITHUB_ENV
run: echo VERSION_NUMBER=$(bun -p "require('./package.json').version") >> $GITHUB_ENV
- name: 🤖 Run yarn init-android
run: yarn install --network-concurrency 1
run: bun i
- name: 🔍 Run yarn tsc
run: yarn tsc
run: bun tsc
- name: 🧪 Run yarn test
run: yarn test
run: bun test
- name: 🦋 Check Styling
run: yarn format:check
- name: 🦋 Check Styling
run: bun run format:check

20
.gitignore vendored
View File

@@ -37,8 +37,10 @@ local.properties
# node.js
#
node_modules/
npm-debug.log
yarn-error.log
# Don't think these will exist anymore!
# npm-debug.log
# yarn-error.log
# fastlane
#
@@ -66,12 +68,12 @@ yarn-error.log
/coverage
# Yarn
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
#.yarn/*
#!.yarn/patches
#!.yarn/plugins
#!.yarn/releases
#!.yarn/sdks
#!.yarn/versions
# Expo
.expo
@@ -80,4 +82,4 @@ web-build/
# Maestro Output
video.mp4
.github/copilot-instructions.md
.github/copilot-instructions.md

View File

@@ -1 +1 @@
yarn lint-staged
bun lint-staged

View File

@@ -18,7 +18,7 @@ Here's the best way to get started:
- [Ruby](https://www.ruby-lang.org/en/documentation/installation/) for Fastlane
- [NodeJS v22](https://nodejs.org/en/download) for React Native
- [Yarn](https://yarnpkg.com/) for managing dependencies
- [Bun](https://bun.sh/) for managing dependencies
### 🍎 iOS
@@ -31,21 +31,21 @@ Here's the best way to get started:
##### Setup
- Clone this repository
- Run `yarn init-ios:new-arch` to initialize the project
- Run `bun init-ios:new-arch` to initialize the project
- This will install `npm` packages, install `bundler` and required gems, and install required CocoaPods with [React Native's New Architecture](https://reactnative.dev/blog/2024/10/23/the-new-architecture-is-here#what-is-the-new-architecture)
- In the `ios` directory, run `fastlane match development --readonly` to fetch the development signing certificates
- _You will need access to the "Jellify Signing" private repository_
##### Running
- Run `yarn start` to start the dev server
- Run `bun start` to start the dev server
- Open the `Jellify.xcodeworkspace` with Xcode, _not_ the `Jellify.xcodeproject`
- Run either on a device or in the simulator
- _You will need to wait for Xcode to finish it's "Indexing" step_
##### Building
- To create a build, run `yarn fastlane:ios:build` to use fastlane to compile an `.ipa`
- To create a build, run `bun fastlane:ios:build` to use fastlane to compile an `.ipa`
### 🤖 Android
@@ -59,18 +59,18 @@ Here's the best way to get started:
##### Setup
- Clone this repository
- Run `yarn install` to install `npm` packages
- Run `bun install` to install `npm` packages
##### Running
- Run `yarn start` to start the dev server
- Run `bun start` to start the dev server
- Open the `android` folder with Android Studio
- _Android Studio should automatically grab the "Run Configurations" and initialize Gradle_
- Run either on a device or in the simulator
##### Building
- To create a build, run `yarn fastlane:android:build` to use fastlane to compile an `.apk` for all architectures
- To create a build, run `bun fastlane:android:build` to use fastlane to compile an `.apk` for all architectures
- Alternatively, run `cd android; ./gradlew assembleRelease` to use Gradle to compile an `.apk`
#### References

2851
bun.lock Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -3,10 +3,10 @@
"version": "0.20.14",
"private": true,
"scripts": {
"init-android": "yarn install --network-concurrency 1",
"init-ios": "yarn init-ios:new-arch",
"init-ios:new-arch": "yarn install --network-concurrency 1 && yarn pod:install:new-arch",
"reinstall": "rm -rf ./node_modules && yarn install",
"init-android": "bun i",
"init-ios": "bun run init-ios:new-arch",
"init-ios:new-arch": "bun i && bun run pod:install:new-arch",
"reinstall": "rm -rf ./node_modules && bun i",
"android": "react-native run-android",
"ios": "react-native run-ios",
"lint": "eslint .",
@@ -16,7 +16,7 @@
"codegen": "env DEBUG=metro:* react-native codegen",
"clean:ios": "cd ios && pod deintegrate",
"clean:android": "cd android && rm -rf app/ build/",
"pod:install": "echo 'Please run `yarn pod:install:new-arch` to enable the new architecture'",
"pod:install": "echo 'Please run `bun run pod:install:new-arch` to enable the new architecture'",
"pod:install:new-arch": "cd ios && bundle install && RCT_NEW_ARCH_ENABLED=1 bundle exec pod install",
"pod:clean": "cd ios && pod deintegrate",
"fastlane:ios:build": "cd ios && bundle exec fastlane build",
@@ -58,7 +58,6 @@
"axios": "1.12.2",
"bundle": "^2.1.0",
"dlx": "^0.2.1",
"gem": "^2.4.3",
"invert-color": "^2.0.0",
"lodash": "^4.17.21",
"openai": "5.21.0",
@@ -142,7 +141,13 @@
]
},
"engines": {
"bun": ">=1.3.2",
"node": ">=18"
},
"packageManager": "yarn@1.22.22"
}
"packageManager": "bun@1.3.2",
"trustedDependencies": [
"@sentry/cli",
"react-native-nitro-modules",
"unrs-resolver"
]
}

View File

@@ -17,7 +17,7 @@ else
git checkout -b "$target_branch"
fi
cd ../..
yarn createBundle:android
bun createBundle:android
cd android/App-Bundles
bash ../../scripts/getRandomVersion.sh --PR
git add .
@@ -42,7 +42,7 @@ else
fi
rm -rf Readme.md
cd ../..
yarn createBundle:ios
bun createBundle:ios
cd ios/App-Bundles
bash ../../scripts/getRandomVersion.sh --PR
git add .

View File

@@ -11,7 +11,7 @@ else
git checkout -b "$target_branch"
fi
cd ../..
yarn createBundle:android
bun createBundle:android
cd android/App-Bundles
bash ../../scripts/getRandomVersion.sh
git add .

View File

@@ -14,7 +14,7 @@ else
fi
rm -rf Readme.md
cd ../..
yarn createBundle:ios
bun createBundle:ios
cd ios/App-Bundles
bash ../../scripts/getRandomVersion.sh
git add .

10029
yarn.lock

File diff suppressed because it is too large Load Diff