Packaging
Hosanna projects include package scripts for bundling and releasing your app. These scripts are defined in package.json
and automate tasks like generating build info, packaging for Roku, and running release tools.
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
npm run package:dev
ornpm run package:prod
to bundle your app for Roku. - The
generate:build-info
script 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
.pkg
files (Roku signing keys) available—recommended location is the project root (these should be git-ignored). - Ensure the environment variables
ROKU_IP
andROKU_DEVPASSWORD
are set for device deployment (the password is usuallyaaaa
).
Notes
- Bundling and release scripts are currently run manually, not in CI, as they require access to a physical Roku device and signing keys.
- For more details on each script, see the comments in your
package.json
and the deployment scripts themselves.