Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@povio/spa-deploy-cli) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
SPA Deploy CLI
Use this tool to deploy a SPA to AWS with CI or manually.
Features:
- Targeted CloudFront invalidation and caching
- CircleCI, Bitbucket, and GitHub Actions examples
- Embedded Globals and Build uplifting ( dev -> stg -> prd )
- Uses the node-stage tool for configuration.
Examples:
Setup
yarn add spa-deploy-cli@poviolabs/spa-deploy-cli#v2
# update
yarn up spa-deploy-cli@poviolabs/spa-deploy-cli#v2
or install globally
npm i -g spa-deploy-cli@poviolabs/spa-deploy-cli#v2 --force
Full config.yaml
Please see the examples for sane defaults!
stages:
myapp-dev: # one stage per deploy
spaDeploy:
verbose: false
buildPath: "./dist"
includeGlob: "**"
ignoreGlob:
aws:
region: us-east-1
accountId:
s3:
acl: "public-read"
bucket: myapp-dev-website
prefix:
purge: false
force: false
invalidateGlob: # extra glob for invalidation
cloudfront:
distributionId:
- CF324365475432
invalidatePaths:
releaseStrategy:
spaIndexGlob: index.html
# inject variables into the website
spaGlobals:
# APP_STAGE: automatic via stage
# APP_VERSION: automatic via appVersion option
# APP_RELEASE: automatic via git
## dotenv overrides
# envFiles: [ '.env.myapp-dev.secrets' ]
## environment overrides
# environment:
# app__spaDeploy__s3__bucket: myapp-dev-website
Injecting globals
Add this snippet to the head
section in the main index.html
.
The content will be replaced with spaGlobals
in the environment
at build time.
<script id="env-data">
// you can add local testing variables here,
// this will get overwritten at build
window.APP_STAGE = "myapp-stg";
</script>
Local Deploy
Check the examples for CI deploy strategies or you can manually deploy with setting up the AWS environment:
config.local.yaml (don't forget to gitignore!)
stages:
myapp-dev:
environment:
AWS_ACCESS_KEY_ID:
AWS_SECRET_ACCESS_KEY:
yarn spa-deploy-cli deploy --stage myapp-stg --appVersion 0.0.1
spa-deploy-cli deploy
Descriptions for useful flags. Use --help
for a comprehensive list
--stage
The slug of the deployment (ie. prd/stg/dev). Used in config.yaml.
--appVersion
Version of the deploy. Tied to a specific Release and Stage.
If supplied with a semver format, the version will be prefixed with ${STAGE}
--ignoreGitChanges
Use this flag while debugging the build. This might have unintended consequences - never deploy a build made using this flag.
--verbose
Display more output
Development
Test locally
# test with ts-node
yarn test:ts-node:cli --help
# build new version
yarn build
# test build
yarn test --help