Packaging
Hosanna projects include package scripts for bundling and releasing your app. Shared scripts generate build metadata and platform scripts create release artifacts for Roku, Apple TV, Android TV, Samsung TV, iOS, Android, and Web.
Platform Outputs
| Platform | Output path |
|---|---|
| Roku | Transpiled BrightScript and SceneGraph channel package |
| Apple TV | Native Apple TV build artifact |
| Android TV | Android TV build artifact |
| Samsung TV | Samsung TV web package |
| iOS | Native iOS build artifact |
| Android | Native Android build artifact |
| Web | Static browser assets |
Example Scripts
"generate:build-info": "node deployment/scripts/generate-build-info.js",
"package:dev": "node deployment/scripts/package-roku.js --env dev",
"package:prod": "node deployment/scripts/package-roku.js --env prod",
"release:ci": "node deployment/release-tool/index.js --ci-build",
"release:preview": "node deployment/release-tool/index.js --dry-run",
"release:final": "node deployment/release-tool/index.js --final"
- Use the package script for the target you are releasing. Roku projects commonly expose
package:devandpackage:prod; native and web targets use their platform build tooling. - The
generate:build-infoscript generates dynamic build metadata and writes it toassets/meta/build-info.json, which is imported into Hosanna at runtime.
Environment Configuration
Before running these scripts, configure your environment in src/config/env.js.
Do not commit secrets or sensitive keys to source control.
Example (sanitize your values):
export const ENV_DEV = {
CLIENT_ID: 'your-client-id',
API_KEY: 'your-api-key',
NPAW_ACCOUNT_CODE: 'your-account-code',
ROKU_DEV_ID: "your-roku-dev-id",
ROKU_DEV_PASSWORD: 'your-roku-dev-password',
ROKU_PKG_NAME: 'your-key.pkg'
}
export const ENV_PROD = {
// ...similar structure...
}
export const ENV = ENV_PROD;
- The scripts will use the correct configuration for each build flavor (dev/prod).
- You must have your
.pkgfiles (Roku signing keys) available—recommended location is the project root (these should be git-ignored). - Ensure the environment variables
ROKU_IPandROKU_DEVPASSWORDare set for device deployment (the password is usuallyaaaa).
Notes
- Bundling and release scripts can run locally or in CI when the target platform's signing credentials, store metadata, and device requirements are available.
- For more details on each script, see the comments in your
package.jsonand the deployment scripts themselves.