CLI
The CLI package (@jetstart/cli) provides the command-line interface for JetStart, enabling developers to create projects, start development servers, build APKs, and manage the development environment.
Overview
The CLI package provides:
- Project Creation - Scaffold new JetStart projects
- Development Server - Start the Core server with hot reload
- Build Commands - Build debug and release APKs
- Log Management - Stream and filter application logs
- Environment Audit - Check and install dependencies
- Emulator Management - Create and manage Android emulators
Installation
npm install -g @jetstart/cli
Or use directly with npx:
npx jetstart <command>
Commands
jetstart create <name>
Create a new JetStart project.
jetstart create myApp
jetstart create myApp --package com.example.myapp
jetstart create myApp --skip-install
Options:
-p, --package <name>- Android package name (e.g.,com.example.app)-t, --template <name>- Template to use (default: "default")--full-install- Install all missing dependencies automatically--skip-install- Skip dependency checks
Example:
jetstart create my-awesome-app --package com.example.myapp
jetstart dev
Start development server with hot reload.
jetstart dev
jetstart dev --port 8080
jetstart dev --no-qr
Options:
-p, --port <port>- Port for HTTP server (default: 8765)-H, --host <host>- Host address (default: auto-detected)--ws-port <port>- WebSocket port (default: 8766)--no-qr- Do not show QR code--no-open- Do not open browser--emulator- Auto-deploy to emulator
Example:
jetstart dev --port 9000
jetstart build
Build production APK.
jetstart build
jetstart build --release
jetstart build --output ./dist
Options:
-o, --output <path>- Output directory (default:./build)-r, --release- Release build: R8 minification,debuggable=false, dev credentials stripped--sign- Sign withkeystore.propertiesin project root (required for Play Store)--self-sign- Auto-generate a test keystore viakeytooland sign (not for Play Store)--bundle- Build AAB (Android App Bundle) instead of APK--flavor <n>- Build a specific product flavor
Examples:
jetstart build --release --sign
jetstart build --release --self-sign
jetstart build --release --bundle
jetstart build --release --flavor staging
jetstart logs
Stream application logs.
jetstart logs
jetstart logs --level error
jetstart logs --source build
Options:
-f, --follow- Follow log output (default: true)-l, --level <level>- Filter by log level (debug,info,warn,error)-s, --source <source>- Filter by source (CLI,CORE,CLIENT,BUILD)-n, --lines <number>- Number of lines to show (default: 100)
Example:
jetstart logs --level error --source BUILD
jetstart install-audit
Check development environment and dependencies.
jetstart install-audit
This command checks for:
- Node.js (18.0.0+)
- npm (9.0.0+)
- Java/JDK (17.0.0+)
- Gradle (8.0.0+)
- Android SDK
- Android SDK components
jetstart android-emulator
Manage Android emulators.
jetstart android-emulator
Interactive menu for:
- Creating JetStart-optimized emulator
- Starting emulator
- Listing emulators
- Deleting emulator
Programmatic Usage
The CLI package can be used programmatically in your own scripts:
import { createCommand, devCommand, buildCommand } from '@jetstart/cli';
// Create a project
await createCommand('myApp', {
package: 'com.example.myapp',
skipInstall: false,
});
// Start dev server
await devCommand({
port: '8765',
host: '0.0.0.0',
noQR: false,
});
// Build APK
await buildCommand({
release: true,
output: './dist',
sign: false,
});
Available Command Functions
createCommand(name: string, options: CreateOptions)
- Create a new JetStart project
devCommand(options: DevOptions)
- Start development server
buildCommand(options: BuildOptions)
- Build APK
logsCommand(options: LogsOptions)
- Stream logs
installAuditCommand()
- Audit dependencies
androidEmulatorCommand()
- Manage emulators
Command Options Types
CreateOptions
interface CreateOptions {
package?: string;
template?: string;
fullInstall?: boolean;
skipInstall?: boolean;
}
DevOptions
interface DevOptions {
port?: string;
host?: string;
wsPort?: string;
noQR?: boolean;
noOpen?: boolean;
emulator?: boolean;
}
BuildOptions
interface BuildOptions {
output?: string;
release?: boolean;
sign?: boolean;
selfSign?: boolean;
bundle?: boolean;
flavor?: string;
}
LogsOptions
interface LogsOptions {
follow?: boolean;
level?: 'debug' | 'info' | 'warn' | 'error';
source?: 'CLI' | 'CORE' | 'CLIENT' | 'BUILD';
lines?: number;
}
Environment Variables
The CLI respects the following environment variables:
DEBUG- Enable debug loggingJETSTART_PORT- Default port for dev serverJETSTART_HOST- Default host for dev serverJETSTART_WS_PORT- Default WebSocket portJAVA_HOME- Java installation pathANDROID_HOME- Android SDK path
Package Structure
src/
├── cli.ts # CLI entry point
├── commands/ # Command implementations
│ ├── create.ts # Create command
│ ├── dev.ts # Dev command
│ ├── build.ts # Build command
│ ├── logs.ts # Logs command
│ ├── install-audit.ts # Install audit
│ └── android-emulator.ts # Emulator management
├── types/ # Type definitions
└── utils/ # Utility functions
├── logger.ts # Logging utilities
├── prompt.ts # User prompts
├── spinner.ts # Loading spinners
├── android-sdk.ts # Android SDK utilities
├── java.ts # Java utilities
├── emulator.ts # Emulator utilities
└── ...
Utilities
The CLI package includes various utility functions:
Logger
import { log, success, error, warn } from '@jetstart/cli';
log('Info message');
success('Success message');
error('Error message');
warn('Warning message');
Prompts
import { prompt, confirm, select } from '@jetstart/cli';
const name = await prompt('Project name:');
const confirmed = await confirm('Continue?');
const choice = await select('Choose option:', ['a', 'b', 'c']);
Spinner
import { spinner } from '@jetstart/cli';
const spin = spinner('Building...');
// ... do work
spin.stop();
Examples
Creating a Project Programmatically
import { createCommand } from '@jetstart/cli';
await createCommand('my-app', {
package: 'com.example.myapp',
template: 'default',
});
Starting Dev Server
import { devCommand } from '@jetstart/cli';
await devCommand({
port: '8765',
host: '0.0.0.0',
noQR: false,
});
Building with Options
import { buildCommand } from '@jetstart/cli';
await buildCommand({
release: true,
output: './dist',
sign: false,
});
Configuration Files
The CLI reads configuration from:
- Project-level:
jetstart.config.jsonin project root - User-level:
~/.jetstart/config.json - Environment variables:
JETSTART_*prefix
Example jetstart.config.json:
{
"projectName": "my-app",
"packageName": "com.example.myapp",
"jetstart": {
"version": "0.1.0",
"enableHotReload": true,
"enableLogs": true,
"port": 8765
}
}
Related Documentation
- CLI Commands - Detailed command reference
- Creating First App - Getting started guide
- Core Package - Server implementation
- Installation Guide - Setup instructions
License
MIT