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

expo-release-config

v0.0.3

Published

Simple Expo release configuration tools.

Downloads

7

Readme

Expo Release Config

CircleCI

Simple Expo release configuration tools.

Goals

Provide a simple toolset to handle Expo releases with CI/CD. While everyone's implementation may vary for their apps, the hope is that the core configuration can be abstracted and aided by open source tooling.

Overview

  1. Production stand alone app released by iTunes Connect and Google Play Store wtih the default release channel.
  2. Staging pre-release testing and QA on a secondary stand alone app that is served internally through TestFlight and Play Store. Configured with a secondary app.json with default release channel.
  3. Feature level verification and testing on Expo client app with release channel named for the feature.
  4. Local development is tested locally using the Expo client app pointing to your machine url.

Here is a simple breakdown of the release environment.

| Environment | Slug | App | Channel | | ----------- | -------- | ----------- | ------------- | | Development | app | Expo Client | localhost | | Feature QA | app-beta | Expo Client | feature/xxx | | Staging | app-beta | App Beta | default | | Production | app | App | default |

Installation

  1. Add the repo to your app's dependencies.
expo install expo-release-config
  1. Expo Release Config will handle generating your app.json files for you. To organize your configuration, create an expo-config.json file in your root directory in the following format:
{
  "prod": {
    "name": "My App",
    "slug": "my-app",
    "ios": {
      "bundleIdentifier": "com.myapp"
    }
  },
  "beta": {
    "extends": "prod",
    "slug": "my-app-beta",
    "ios": {
      "bundleIdentifier": "com.myapp.beta"
    }
  },
  ...
  "version": {
    "major": 1,
    "minor": 2,
    "patch": 0,
    "build": 10
  }
}

"prod" is the default app scheme. You can add any scheme you want by adding another root attribute with its name (ie beta, staging, sandbox, etc). The "extends": "parent scheme" attribute is used to merge your configurations together. This way, you only need to store the differences, not duplicated settings.

You'll also need a version object added if you want to track versioning.

Usage

expo-config generate [scheme]

Generates an Expo app.json configuration file based on the provided scheme.

This will deep merge attributes nested in the [scheme]: {} object of your app configuration file into the specified "extends": "[scheme]" scheme and save as a new file.

npx expo-config generate beta

Using the example expo-config.json file above, the result of this command would be the following:

app.json

{
  "expo": {
    "name": "My App",
    "slug": "my-app-beta",
    "ios": {
      "bundleIdentifier": "com.myapp.beta"
    }
  }
}

expo-config version [type=patch] [--no-commit=false] [--print=false]

Bumps the version file and updates the Expo app configuration, committing by default.

| Options | Default | Description | | -- | -- | --| | type | patch | One of major, minor, patch, build. | --no-commit | false | Whether to commit the changed version files. Only commits expo-config.json. | --print | false | Will output the next version for the bump without changing any files.

npx expo-config version minor --no-commit

| Version Type | Description | | -- | -- | | major | The major released version. | | minor | The minor released version. Major + Minor version (ie 1.2) will comprise the released standalone app version. | | patch | The patch version. Will be incremented when publishing a new (over the air) update of your app. | | build | The build number to specify versionCode (Android) and buildNumber (iOS). To simplify configuration the same number will be used for both OS. |

Todo

  • [ ] Publish app default with changes to $PROD branch.
  • [ ] Publish app-beta default with changes to /release/xxx branch.
  • [ ] Publish standalone app with tagged version.
  • [ ] Publish standalone app-beta with changes to /build/xxx branch.
  • [ ] Publish /feature/xxx with changes to /feature/xxx.