Adrián Mouly
06/11/2021, 12:50 AMDennis Dang
06/11/2021, 1:07 AMthdxr
06/11/2021, 1:11 AMAdrián Mouly
06/11/2021, 1:14 AMAdrián Mouly
06/11/2021, 1:15 AMAdrián Mouly
06/11/2021, 1:15 AMthdxr
06/11/2021, 1:18 AMAdrián Mouly
06/11/2021, 1:20 AMAdrián Mouly
06/11/2021, 1:21 AMDennis Dang
06/11/2021, 1:21 AMAdrián Mouly
06/11/2021, 1:21 AMDennis Dang
06/11/2021, 1:21 AMDennis Dang
06/11/2021, 1:22 AMpr1
part?thdxr
06/11/2021, 1:22 AMAdrián Mouly
06/11/2021, 1:22 AMAdrián Mouly
06/11/2021, 1:22 AMAdrián Mouly
06/11/2021, 1:22 AMAdrián Mouly
06/11/2021, 1:23 AMAdrián Mouly
06/11/2021, 1:23 AMFrank
api-stack
and a BE repo with a React app. In the api
stack, have an output called API_URL
.
Now on Seed, configure the Post-Deploy Phase to be something like:
API_URL=$(aws cloudformation describe-stacks --stack-name $SEED_STAGE_NAME-api-stack --query 'Stacks[0].Outputs[0]...')
git clone FE
npm install
npm run build
Frank
npm run build
.Frank
Adrián Mouly
06/11/2021, 1:59 AMAdrián Mouly
06/11/2021, 1:59 AMFrank
Adrián Mouly
06/11/2021, 2:00 AMAdrián Mouly
06/11/2021, 2:00 AMFrank
Frank
Adrián Mouly
06/11/2021, 2:08 AMAdrián Mouly
06/11/2021, 2:08 AMFrank
StaticSite
construct should work for you. Here’s an example for React - https://docs.serverless-stack.com/constructs/StaticSite#creating-a-react-siteAdrián Mouly
06/11/2021, 4:27 AMRyan
06/15/2021, 1:42 PMStaticSite
construct is great! (I just used it)
Last time I did frontend deployments, it was a huge pain. With StaticSite
it's a breeze.Adrián Mouly
06/15/2021, 6:22 PMRyan
06/16/2021, 6:05 AMimport * as sst from "@serverless-stack/resources";
import * as fs from 'fs';
export default class FrontendStack extends sst.Stack {
constructor(scope: <http://sst.App|sst.App>, id: string, props?: sst.StackProps) {
super(scope, id, props);
const hostedZone = '<http://mydevhostedzone.com|mydevhostedzone.com>';
const domain = 'dev';
fs.writeFileSync(`../../frontend/src/environments/config-prod.json`, JSON.stringify({apiUrl: 'api.' + domain + '.' + hostedZone}));
const frontend = new sst.StaticSite(this, "StaticSite", {
path: '../../frontend',
buildCommand: 'npm run build:prod',
buildOutput: 'dist/',
customDomain: {
hostedZone: hostedZone,
domainName: domain + '.' + hostedZone
}
});
}
}
Ryan
06/16/2021, 6:08 AMRyan
06/16/2021, 1:38 PM