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

exptool

v0.5.3

Published

Expo cli toolset to help automate iOS and Android builds and deployments

Downloads

24

Readme

Exptool was originally created to help automate standalone expo app builds, but exp recently implemented the necessary features required to fulfill this goal.

Exptool is no longer needed to automate expo standalone builds. Take a look at this blog post if you're looking to automate your standalone builds without exptool.

Exptool 📲

  • Exptool was created to help automate expo standalone iOS and Android builds and deployments.
  • Exptool + exp + fastlane = 🏆🥇.
    • See example below for more details on how to combine these 💯 tools.

Getting Started

Install via npm (or yarn):

$ npm install -g exptool

Usage

$ exptool --help
  Usage: exptool [options] [command]

  Expo toolset to help with automation

  Options:

    -V, --version  output the version number
    -h, --help     output usage information

  Commands:

    check:status [project-dir]                 Checks the build status for a given project. Will exit with non-zero status code if the project is already building
    wait:build [options] [project-dir]         Wait for active build to complete
    download:artifact [options] [project-dir]  Downloads the most recent artifact for a given project
    url:artifact [project-dir]                 Prints the latest url artifact for a given project
    url:expo [options] [project-dir]           Prints the expo url for a given project and [optional] release channel
    android:package [project-dir]              Prints the android package name for a given project (reads from app.json)
    inc:build [project-dir]                    Increments the ios.buildNumber and android.versionCode in app.json

Examples

Blog Posts

Wiki

Step By Step Example Usage

Note: The following example is a shortened version of a longer blog post walkthrough.

The following is a sequence of bash commands that, when executed in sequence, will automate your expo iOS and Android standalone app builds and deployments.

You can run these commands on your local machine, or ideally, translate these commands to your continuous-integration/continuous-deployment service. These commands are written to be ran in the same directory as your expo project.

This is meant to be a guide, so customize it to fit your automation needs!

Prerequisites / Notes

  • This guide assumes you have exp and fastlane installed and understand how to use them!
  • Be conscious of env variables along the way.
  • If you decide to use fastlane, the fastlane deliver command will only work on macOS.

Setup

# Install dependencies.
npm install

# [Optional] Login to expo using username & password.
# You may or may not need to do this depending on your setup.
# Note the $EXPO_USERNAME and $EXPO_PASSWORD env variables.
exp login -u $EXPO_USERNAME -p $EXPO_PASSWORD --non-interactive

Publish To Expo

# Publish `production` release
exp publish --release-channel production --non-interactive

Build Standalone Android APK

# Makes sure that there are no active standalone apps being built at this time.
# Will exit with a non-zero status code if there is an active standalone app already being built.
exptool check:status 

# Start building standalone android build using `production` release channel.
exp build:android --release-channel production --non-interactive

# Wait for the build to finish, checking its status every 2 mins (timeout is 20 mins).
# Will exit 0 (success) once the build has successfully been built.
# Android builds take a little longer in my experience, hence the longer interval and timeout.
exptool wait:build --interval 120 --timeout 1200

# Download the artifact to current directory as `app.apk`
exptool download:artifact

# [Optional/Advanced] Use fastlane to upload your current standalone android build.
# Customize this to fit your needs. Take note of env variables. 
# Check out https://docs.fastlane.tools for more info.
fastlane supply --package_name "$(exptool android:package)" --apk "app.apk" --json_key_data "$JSON_KEY_DATA" --skip_upload_metadata --skip_upload_images --skip_upload_screenshots

Build Standalone iOS IPA

# This section is extremely similar to android steps above,
# take a look there if you have any questions.
exptool check:status
exp build:ios --release-channel production --non-interactive
exptool wait:build # using default interval & timeout
exptool download:artifact

# [Optional/Advanced] Use fastlane to upload your current standalone iOS build to iTunes Connect.
# set $FASTLANE_PASSWORD=<your-itunes-connect-password> if you want to skip password prompt.
# Take note of env variables.
# Check out https://docs.fastlane.tools for more info.
fastlane deliver --verbose --ipa "app.ipa" --username "$ITC_EMAIL" --skip_screenshots --skip_metadata

Tear Down

# [Optional] You may or may not need to do this depending on your setup.
exp logout

Questions, Issues, Feature Requests

Something missing? Have a question? Create a pull request or open an issue.