npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

aeonian

v1.2.3

Published

Continuous deployment to for S3->CloudFront setups

Downloads

44

Readme

still in early development

npm version GitHub issues GitHub license CircleCI Join the chat at https://gitter.im/aws-aeonian/Lobby

NPM

I've built this to help supply a continuous delivery git-flow workflow hosted on an AWS serverless setup

What does this do?

Running .deploy('{environment}') will do the following:

  1. Create a new S3 bucket {prefix}-{commit-hash}-{environment} based on the current repo and config
  2. Upload the contents of a local directory you specified as localDir
  3. Configure the newly created bucket as a static website
  4. Change the origin of the CloudFront ID associated to point to our new bucket's website URL
  5. Initiate an invalidation on * making the Distribution pull the new bucket's content
  6. Delete the previous bucket that was assigned as the origin as to not leave a trail of buckets

Example

Let's say you have a script operations/aeonian.js with the following

require('aeonian').config({
  bucket: {
    localDir: './dist/',
    prefix: 'mysite-'
  },
  website: {
    index: 'index.html',
    error: 'error/index.html',
  },
  environments: {
    staging: 'CLOUDFRONT_ID',
    production: 'CLOUDFRONT_ID',
  }
}).deploy(process.argv[2])

Running node operations/aeonian.js staging this would result in

Which would deploy ./dist/ to your S3+CF staging environment

Installation

  • Install the aeonian package npm install aeonian or yarn add aeonian
  • Set the current environment variables to your AWS key and secret for the AWS JS SDK
    • AWS_ACCESS_KEY_ID
    • AWS_SECRET_ACCESS_KEY
    • Other options on this step can be found here

CircleCI Integration

This is mostly why aeonian exists, to deploy based on commits. Based on the example above, lets say you have the above script operations/aeonian.js in your repo. you could then add the following to your package.json

"scripts": {
  ...
  "staging": "node operations/aeonian.js staging",
  "production": "node operations/aeonian.js production",
  ...
},

After setting your AWS credentials on CircleCi, you could add something like this to your circle.yml

deployment:
  staging:
    branch: staging
    commands:
      - npm run staging
  production:
    branch: master
    commands:
      - npm run production
  • Any commit/PR merge to the staging branch would deploy the staging environment
  • Any commit/PR merge to the master branch would deploy the production environment

Nuxt.js Integration

The main reason I built aeonian is for my all of my Nuxt.js projects. I have the following commands in my package.json that I have CircleCI run based on environment

  "scripts": {
    ...
    "production": "yarn generate; node operations/aeonian.js production",
    "staging": "yarn generate; node operations/aeonian.js staging",
    ...
  },