npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@hubspire/expo-app

v2.0.3

Published

This package helps to setup an Expo project using HubSpire's boilerplate code.

Downloads

14

Readme

Expo Application Template

This package helps to setup an Expo application using HubSpire's template.

Prerequisites

Make sure you have:

  • set up a bitbucket repository for the project with write access.
  • set up a Sentry account for the project.
  • the development, staging and production base API URLs ready.

Usage

To create the Expo project using this template, run:

$ npx create-expo-app <ProjectName> --template @hubspire/expo-app

Getting Started

NOTE: When running scripts, it's important to initiate them from the top-level directory of the project.

Project setup

$ chmod +x project-setup.sh
$ ./project-setup.sh  
  • Make sure that you are running this script before making any changes to the project by yourself. This shell script will :
  • Create the default environment files with the required environment variables for you. It will also update the env field inside eas.json with the values you provide during setup. You can update their values later after the script execution.
  • Remove/Update some values in the app.config.ts, eas.json, eas-build-on-success.sh and package.json files which are exclusive for the template project.
  • Remove readme file used for the template project.
  • Add secret folders and files to gitignore.
  • Initialise new repository for the project.
  • Remove the script file after execution.
  • Publish an initial commit to the remote url you provided.

Add environment files

NOTE: You can skip this step if you have successfully executed the project-setup.sh.

Create .env.development, .env.test and .env.production files in project's root folder

$ touch .env.development.local
$ touch .env.development
$ touch .env.test
$ touch .env.production
//.env.development.local
//only required if you need to connect to backend using a local url for debugging
EXPO_PUBLIC_LOCAL_API_URL='local api url' 
//.env.development
EXPO_PUBLIC_APP_VARIANT=development
SENTRY_ORG='sentry org name'
SENTRY_PROJECT='sentry project name'
SENTRY_AUTH_TOKEN='sentry auth token'
EXPO_PUBLIC_SENTRY_DSN='sentry dsn'
EXPO_PUBLIC_API_URL='dev api url'
GOOGLE_SERVICES_JSON_DEV=./assets/secrets/google-services-dev.json
//.env.test
EXPO_PUBLIC_APP_VARIANT=staging
...
GOOGLE_SERVICES_JSON_STAGING=./assets/secrets/google-services-staging.json
//.env.production
EXPO_PUBLIC_APP_VARIANT=production
...
GOOGLE_SERVICES_JSON=./assets/secrets/google-services.json

Setup push notification

  • Add your google-services.json (3 files for 3 environments) files inside assets/secrets folder.
  • Add environment secrets GOOGLE_SERVICES_JSON(_STAGING/_DEV) with their corresponding values for eas build to have access to these variables.
  • Make sure you have set up server credentials for android.
  • Make sure you have enabled push notification and generated APNS key for your iOS build when prompted during eas build.
  • Listeners to display notification, deep linking configurations for push notification and a button to send a test notification has been set up in the template.
  • Refer this documentation for more.

Setup codegen

$ npm run codegen-compile

Expo Go

No additional setup is required to run the app in Expo Go.

$ npm run start-go:dev 

EAS

Make sure to remove extra.eas and updates fields (since these are the values used for the template project specifically). It will be generated again once you complete next steps.

NOTE: They will be already removed if you have executed the project-setup.sh.

Install eas cli.

$ npm install -g eas-cli

Login to Expo account if you haven't already.

$ eas login

Configure eas build.

$ npm run build:configure

Configure eas update.

$ npm run update:configure

Add SENTRY_AUTH_TOKEN environment variable in the Expo account and save the auth token generated from Sentry as its value. Refer this Documentation for more.

Build and run development build using eas

$ npm run build:ios-dev:eas
$ npm run build:android-dev:eas

Testing

Unit Testing: Jest

$ npm run test:unit

E2E Testing: Maestro

$ npm run test:e2e:production

CI/CD

Bitbucket: bitbucket-pipelines.yml

NOTE: Make sure you have set up the EXPO_TOKEN environment variable in your repository and MAESTRO_API_KEY as an environment secret.

Commits to release/staging branch will trigger Jest unit tests followed by an EAS build for Android and iOS using development:e2e profile.

Commits to release/production branch will trigger EAS build using production profile.

EAS: eas-build-on-success.sh

A successful EAS build with the development:e2e profile will trigger E2E testing using Maestro. The flows are expected to be located inside the .maestro folder at the top-level directory of the project.