Couper Documentation

edge

SPA

The spa blocks configure the Web serving for SPA assets. Can be defined multiple times as long as the base_path+paths is unique.

Block nameContextLabel
spaServer BlockOptional
spa {
    base_path = "/my-app" # mounts on /my-app(/**,/special)
    bootstrap_file = "./htdocs/index.html"
    paths = ["/**", "/special"]
}

Bootstrap Data

As it could get complicated to configure an SPA based on its environment (urls, clientIDs, …) Couper can inject those environment based values into the bootstrap_file before serving it to the client.

The first bootstrap_data_placeholder will be replaced with the evaluated value of bootstrap_data. This happens on startup and is meant to inject env values.

bootstrap_data Example

# couper.hcl
spa {
    bootstrap_file = "./htdocs/index.html"
    paths = ["/**"]
    bootstrap_data = {
      url: env.MY_API_URL,
      prop: "value",
    }
}
<!-- ./htdocs/index.html -->
<!DOCTYPE html>
<html lang="en">
  <head>
    <script>
      try {
        window.AppConfig = __BOOTSTRAP_DATA__;
      } catch(e) {
        console.warn('DEVELOPMENT MODE: ', e)
        window.AppConfig = {} // fallback for local development
      }
    </script>
  </head>
  <body>App</body>
</html>

The result would be the following snippet. Just place this <script> tag before all other script references in the head tag. Then the application can access the window.AppConfig object to bootstrap its configuration.

<!-- ... -->
  <script>
    try {
      window.AppConfig = {
        "url": "https://docs.couper.io/",
        "prop": "value",
      };
    } catch(e) {
      console.warn('DEVELOPMENT MODE: ', e)
      window.AppConfig = {} // fallback for local development
    }
  </script>
<!-- ... -->

Attributes

NameTypeDefaultDescription
access_control
tuple (string)
[]
Sets predefined access control for spa block context.
add_response_headers
object
-
Key/value pairs to add as response headers in the client response.
base_path
string
-
Configures the path prefix for all requests.
bootstrap_data
object
-
JSON object which replaces the placeholder from bootstrap_file content.
bootstrap_data_placeholder
string
"__BOOTSTRAP_DATA__"
String which will be replaced with bootstrap_data.
bootstrap_file
string
-
Location of the bootstrap file.
custom_log_fields
object
-
Log fields for custom logging. Inherited by nested blocks.
disable_access_control
tuple (string)
[]
Disables access controls by name.
paths
tuple (string)
[]
List of SPA paths that need the bootstrap file.
remove_response_headers
tuple (string)
[]
List of names to remove headers from the client response.
set_response_headers
object
-
Key/value pairs to set as response headers in the client response.

Nested Blocks

NameDescription
cors
Configures CORS settings (zero or one).