@stellar-apps/create-static-react-router-app
This is an inst
template for launching
static hosted React apps with a Router on S3 + CloudFront with custom domains.
Installation
This assumes you've already created an inst
workspace with inst init [workspace]
cd my-workspace
yarn inst @stellar-apps/create-static-react-router-app
Installation options
-
Name
- The name of the package you're creating
-
AWS profile
- The name of the AWS profile in your
~/.aws/credentials
file that you'd like to use to deploy this application
- The name of the AWS profile in your
-
Domain name [production]
- The domain name to launch the
production
version of your static app on
- The domain name to launch the
-
Website S3 bucket [production]
-
default
[value of production Domain name]
- The name of the bucket to deploy the static site (HTML files, robots.txt, etc.) into.
-
default
-
Client S3 bucket [production]
-
default
[Name]-public
- The name of the bucket to deploy your client JS, images, etc. into. These are resources that are external to your static application, as in, not HTML files, robots.txt, etc.
-
default
-
Domain name [staging]
-
default
staging-[Domain name]
if[Domain name]
is a subdomain, otherwisestaging.[Domain name]
- The domain name to launch the
staging
version of your static app on
-
default
-
Website S3 bucket [staging]
-
default
[value of staging Domain name]
- See
production
above for description
-
default
-
Client S3 bucket [staging]
-
default
[value of production Client S3 bucket with '-public' replaced by '-staging-public']
- See
production
above for description
-
default
-
Inherits code from
- Use the spacebar and arrow keys to select libraries already part of your Workspace to inherit code from,
e.g. a
core
orshared
directory. You will then be able to import these libraries into your application via the alias~[library name]
e.g.import {Header} from '~core'
- Use the spacebar and arrow keys to select libraries already part of your Workspace to inherit code from,
e.g. a
Configuring CloudFormation
You should pay special attention to these values in serverless.yml
EVERY TIME you create a new app
from this template. This should be the FIRST THING you do after you create an app.
-
The default template assumes you're using a unique bucket for the public client assets of this application. If you're using a shared bucket that already exists, be sure to delete the
resources.Resources.ClientS3Bucket
section of theserverless.yml
that gets generated. -
The default behavior for client buckets is to
retain
them onteardown
so as not to accidentally empty a bucket that is in use by other applications. To change this behavior, assuming your bucket is unique, you can change the option forretain
tofalse
incustom.syncBundle['webpack/client.config.js'].bucket
and comment outresources.Resources.ClientS3Bucket.DeletionPolicy
. -
The default behavior for managing ACM certificates is to
retain
them onteardown
. This is to prevent encountering errors when you try to remove certificates that are still in use by other applications, e.g. wildcard certificates. To change this behavior, setretain
tofalse
incustom.certificateManager.retain
-
Pay special attention to the
custom.certificateManager.domains
listed to be sure they are exactly the domains you need a certificate for and that they will use the exact same certificate. -
You will want to glance at the
.env.[stage]
files to ensure the properPUBLIC_PATH
is defined if you're using a CloudFront distribution in front of your S3 bucket.
Managing the application
development
stage and development
NODE_ENV on a local server
Starting the app in the cd my-workspace
yarn my-app start
development
stage and production
NODE_ENV on a local server
Starting the app in the cd my-workspace
yarn my-app start production
staging
stage
Deploying the CloudFormation stack to Note: You have to use this command before using deploy
without a --stack
flag
cd my-workspace
yarn my-app deploy --stack
production
stage
Deploying the CloudFormation stack to Note: You have to use this command before using deploy production
without a --stack
flag
cd my-workspace
yarn my-app deploy production --stack
staging
stage
Deploying the application without changing the CloudFormation stack to cd my-workspace
yarn my-app deploy
production
stage
Deploying the application without changing the CloudFormation stack to cd my-workspace
yarn my-app deploy production
staging
stage to S3
Bundling the application without uploading the cd my-workspace
yarn my-app bundle
production
stage to S3
Bundling the application without uploading the cd my-workspace
yarn my-app bundle production
staging
CloudFormation stack
Tearing down the This removes your CloudFormation stack and all the resources defined within it. Use with extreme caution.
cd my-workspace
yarn my-app teardown
production
CloudFormation stack
Tearing down the This removes your CloudFormation stack and all the resources defined within it. Use with extreme caution.
cd my-workspace
yarn my-app teardown production