UNPKG

@boomerang-io/webapp-spa-server

Version:

Webapp Server for React-based SPA w/ client-side routing

116 lines (84 loc) 4.54 kB
# Webapp SPA Server Provide a consistent way to deploy Boomerang React SPAs with client-side routing into an IBM Cloud Private environment. ## Features - Serve static assets - Client-side routing support for SPAs - Dynamic data and script injection into HTML document at run-time - Logging with [@boomerang-io/logger-middleware](https://github.com/boomerang-io/webapp-packages/src/packages/logger-middleware) - Cloud native health checking with [Cloud Native Health Connect](@cloudnative/health-connect) - New Relic monitoring - Instana monitoring - Google Analytics - BeeHeard survey ## Design The server can be invoked via a command line or imported as a configurable function to be executed. - CLI - for easy stand alone use that can be invoked via a script e.g. in `npm scripts` - Function - create server and run it within a `node.js` file ## CLI The server can be run via the CLI interface with configuration pass as options. Enter the following to see the manual ```shell boomerang-webapp-server --help ``` Command ```shell boomerang-webapp-server serve ``` Options | **Option** | **Alias** | **Description** | | :-------------------------- | :-------: | :----------------------------------------------------------------------------------------------- | | --cors | -c | CORS configuration using [cors](https://www.npmjs.com/package/cors) package. Accepts JSON string | | --disableInjectHTMLHeadData | -d | Toggle whether the app needs to inject data into the header. Defaults to `false` | | --dotenvFilePath | -p | Path to local .env file to read in. Useful for local testing | ## Use as a function ```javascript const server = require("@boomerang-io/webapp-spa-server"); server({ cors: {}, disableInjectHTMLHeadData: true, }); ``` ## Environment Variables The following env variables are assumed to exist either from a local `.env` file or passed in to the container at runtime. If nothing is passed it, it will default to the following: | **Variable** | **Purpose** | **Type** | | :--------------------------: | :-----------------------------------------------------------------------: | :------------------: | | APP_ROOT | Root context of the application | string | | BUILD_DIR | directory relative to the exeuction where app files are located | string | | PORT | Port for server to run on | number | | HTML_HEAD_INJECTED_DATA_KEYS | Environment variables to inject into the HTML document | comma delimited list | | HTML_HEAD_INJECTED_SCRIPTS | Scripts to inject into HTML document. Files need to be in the `BUILD_DIR` | comma delimited list | | NEW_RELIC_APP_NAME | App name for New Relic monitoring | string | | NEW_RELIC_LICENSE_KEY | License key for New Relic monitoring | string | | INSTANA_REPORTING_URL | Reporting URL for Instana monitoring | string | | INSTANA_KEY | License key for Instana monitoring | string | | GA_SITE_ID | Site ID for Goolge Analytics | string | | ENABLE_BEEHEARD_SURVEY | Enable BeeHeard survey | boolean | ## Defaults Some of the values, both config and environment variables have defaults in the server for deploying to the IBM Consulting Essentials platform. APP_ROOT - "/" BUILD_DIR - "build" CORS ```json { "origin": "*", "allowedHeaders": "Content-Type, Authorization, Content-Length, X-Requested-With", "methods": "DELETE,GET,OPTIONS,PATCH,POST,PUT" } ``` HTML_HEAD_INJECTED_DATA_KEYS - APP_ROOT - BASE_APPS_ENV_URL - BASE_LAUNCH_ENV_URL - BASE_SERVICE_ENV_URL - BASE_WWW_ENV_URL - CORE_APPS_ENV_URL - CORE_ENV_URL - CORE_SERVICE_ENV_URL - PRODUCT_APPS_ENV_URL - PRODUCT_ENV_URL - PRODUCT_SERVICE_ENV_URL - ICA_ENABLE_MACS PORT - 3000