@d11/delivr-cli
v0.0.6
Published
Management CLI for Delivr - deploy mobile app updates over-the-air
Readme
Delivr CLI
The Delivr CLI is a Node.js application that allows users to deploy and manage over-the-air updates for React Native applications.
Installation & Usage
Global Installation
npm install -g @d11/delivr-cliAfter global installation, you can use the CLI directly:
code-push-standalone <command>Project Installation
# Using npm
npm install --save-dev @d11/delivr-cli
# Using yarn
yarn add --dev @d11/delivr-cliAfter project installation, you can use the CLI through npm/yarn:
# Using npm
npm run code-push-standalone <command>
# Using yarn
yarn code-push-standalone <command>
# Using npx
npx code-push-standalone <command>Authentication
Most commands require authentication. You'll need an access key to use the CLI.
Login
# Login with access key
code-push-standalone login --accessKey <your-access-key>
# Check login status
code-push-standalone whoami
# Logout
code-push-standalone logoutTo get an access key:
- Visit Delivr Dashboard
- Go to Settings → Generate New Token
- Generate a new access key
Release Management
The release command allows you to deploy updates to your app. There are two types of updates you can release:
- Full Bundle (sending fully updated bundle)
- Patch Bundle (sending only the diff)
Command Structure
code-push-standalone release <appName> <updateContents> <targetBinaryVersion>
[--deploymentName <deploymentName>]
[--description <description>]
[--disabled <disabled>]
[--mandatory]
[--noDuplicateReleaseError]
[--rollout <rolloutPercentage>]
[--isPatch <true|false>] # Default false. Specify true in case sending patch bundle.
[--compression <'deflate' | 'brotli'>] # 'deflate' (default) or 'brotli' (better compression)Parameters:
Required Parameters:
appName: Name of your app (e.g., "MyApp-iOS")updateContents: Path to your update files (bundle/assets)targetBinaryVersion: App store version this update is for. Can be:- Exact version: "1.0.0"
- Range: "^1.0.0" (compatible with 1.x.x)
- Wildcard: "*" (all versions)
Optional Parameters:
--deploymentNameor-d: Target deployment ("Staging" or "Production", defaults to "Staging")--descriptionor-des: Release notes or changelog--disabled: Prevents update from being downloaded (useful for staged rollouts)--mandatory: Forces users to accept this update--noDuplicateReleaseError: Shows warning instead of error if releasing same content--rollout: Percentage of users who should receive this update (1-100)--isPatch: Whether this is a patch updatefalse(default): Full bundle updatetrue: Patch update (requires patch bundle)
--compression: Compression algorithm to usedeflate(default): Standard compressionbrotli: Better compression, smaller bundle size
Full Bundle Release
Release a complete new bundle:
# Release to staging with deflate compression (default)
code-push-standalone release MyApp-iOS ./codepush 1.0.0 \
--deploymentName Staging \
--description "New features" \
--isPatch false
# Release with brotli compression (better compression)
code-push-standalone release MyApp-iOS ./dist/bundle "^1.0.0" \
--deploymentName Production \
--mandatory \
--isPatch false \
--compression brotliNote about compression: Brotli typically achieves better compression ratios than deflate (e.g., 23.1MB → 8.14MB with Brotli vs 11.04MB with deflate).
Patch Bundle Release
For smaller updates, first create a patch and then release it:
- Create patch between old and new bundles:
code-push-standalone create-patch \
./old-bundle \
./new-bundle \
./.codepush/patches- Release the patch:
# Release patch with brotli compression
code-push-standalone release MyApp-iOS ./.codeupush/patches "1.0.0" \
--deploymentName Staging \
--description "Bug fixes" \
--isPatch true \
--compression brotliNote about patches: Patch updates significantly reduce the update size as they only contain the changes between versions. Always use
--isPatch truewhen releasing a patch bundle.
Note: Make sure to upload assets alongwith patch bundle.
For more details about the binary diff implementation, see bsdiff/README.md.
Promote Updates
After testing in staging, promote to production:
# Basic promotion
code-push-standalone promote MyApp-iOS Staging Production
# Promotion with options
code-push-standalone promote MyApp-iOS Staging Production \
--rollout 25 \ # Release to 25% of users
--description "Verified update" # Update descriptionContributing
For information about contributing to Delivr CLI, please see our Contributing Guide.
Note: For additional commands and advanced features, see our Advanced Usage Guide.
