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 🙏

© 2026 – Pkg Stats / Ryan Hefner

green-line-cli

v1.0.12

Published

Green Line CLI for iOS build and App Store submission workflows

Readme

green-line-cli

green-line-cli is a local-first command-line tool that helps iOS teams build, sign, and submit apps to App Store Connect from one workflow.

No API server, database server, queue service, or cloud account is required.

Framework Compatibility

  • Native iOS (Swift/Objective-C + Xcode): Supported.
  • Flutter (iOS target): Supported (uses the Flutter project's generated iOS Xcode workspace/project).
  • React Native: Supported.
  • Expo: Supported, with additional guided migration/setup helpers via gl migrate expo / --from-expo.

The build/submit engine is Xcode + Fastlane based, so compatibility depends on having a valid iOS Xcode project/workspace, schemes, and Apple signing setup.

Install

From npm:

npm install -g green-line-cli
gl --help

From monorepo source:

npm run -w green-line-cli build
npm install -g ./apps/cli

Prerequisites

brew install fastlane
  • macOS + Xcode are required for real iOS build/sign/upload.
  • Local CLI data is stored under ~/.config/green-line/.

Getting Started

Run these once per app folder.

  1. Open the app folder first
cd /absolute/path/to/your-app
pwd
  1. Check your environment
gl doctor
  1. Run setup for this folder
gl apple setup

During setup, Green Line can:

  • Detect Apple ID and bundle ID when possible.
  • Save org/project/bundle/team/profile defaults for the current folder.
  • Help you import AuthKey_*.p8 and open the right App Store Connect pages.
  1. Start build
gl build ios start
  1. Review result
gl build ios status <BUILD_ID>
gl build ios logs <BUILD_ID>
  1. Submit after successful build
gl submit ios preflight --build <BUILD_ID>
gl submit ios start --build <BUILD_ID>

New Project Folder

When you switch to a different app folder, run setup once in that folder:

cd /absolute/path/to/another-app
gl apple setup

Green Line keeps defaults per folder so projects stay isolated.

Quick Start (Interactive)

gl doctor
gl apple setup
gl build ios start
gl submit ios preflight
gl submit ios start

This is the quick path. Use the full guide above for the full walkthrough.

Expo Migration (Recommended for Expo apps)

gl migrate expo

Expo migration does the following:

  • Detect Expo metadata from app.json / app.config.json.
  • Detect Expo-related packages from both Expo plugin config and source imports.
  • If no native iOS project is found, prompt once to run npx expo prebuild --platform ios and remember that choice for the folder.
  • In --yes mode, auto-runs Expo prebuild when native iOS files are missing.
  • Offers to install missing Expo-related packages and refresh iOS pods.
  • Confirms whether you are already signed into App Store Connect.
  • Can open Apple pages and auto-import AuthKey_*.p8 from ~/Downloads.
  • If import fails, prints fallback URLs and exact Apple navigation.
  • If manual signing fails due to profile/certificate mismatch, build retries once with automatic signing.

Equivalent long form:

gl apple setup --from-expo

Non-Interactive Mode (CI)

Use --yes to run without interactive confirmations:

gl migrate expo --yes
gl apple setup --from-expo --yes
gl build ios start --yes
gl submit ios start --build <BUILD_ID> --yes

For deterministic runs, pass ASC details directly:

gl migrate expo \
	--issuer-id <ISSUER_UUID> \
	--key-id <KEY_ID> \
	--p8 /absolute/path/AuthKey_<KEY_ID>.p8 \
	--yes

Build Failure UX

  • If signing assets mismatch, Green Line retries once with automatic signing.
  • If archive fails due app compile issues (Swift/React Native/Flutter iOS build scripts), Green Line reports a short message to open Xcode and fix project compile/build errors.
  • Detailed diagnostics are available via gl build ios logs <BUILD_ID>.

Known Limitations

  • Green Line can guide, auto-detect, and retry signing strategies, but it cannot bypass Apple account requirements.
  • If App Store Connect API key does not exist, you still need to create/download it once in Apple.
  • If app code does not compile, build fails until code is fixed in Xcode.
  • If signing assets are invalid for the app entitlements, Apple/Xcode rejects the archive.

Local Data

  • ~/.config/green-line/config.json
  • ~/.config/green-line/state.json
  • ~/.config/green-line/storage/...

Doctor

Run gl doctor to check your environment, project, and Green Line state in one command:

gl doctor
gl doctor --json

Checks include: macOS, Xcode, Fastlane, codesigning identities, iOS project detection, bundle ID, app icon, provisioning profile expiry, ASC connection, and more.

Support

Expo is a trademark of its respective owner(s); this project is independent and not affiliated with or endorsed by Expo.