0.1.2 • Published 2 years ago

@whatskit/s3deployer-cli v0.1.2

Weekly downloads
-
License
UNLICENSED
Repository
github
Last release
2 years ago

@whatskit/s3deployer-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 )

Examples:

Setup

yarn add -D @whatskit/s3deployer-cli

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 s3deployer-cli deploy --stage myapp-stg --appVersion 0.0.1

s3deployer-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