Plugin for deploying Hexo sites to Amazon S3.
This is an alternative to the existing hexo-deployer-s3 and hexo-deployer-s3-cloudfront plugins that has been written from the ground up to use the new AWS SDK v3.
npm install -S @string-bean/hexo-deployer-aws-s3
Add the following section to your Hexo _config.yml
:
deploy:
type: aws-s3
region: us-east-1
bucket: example-bucket
And then deploy using hexo deploy
.
After deploying to S3 the plugin can optionally invalidate a CloudFront distribution to force a cache refresh. To do this, add the CloudFront distribution ID to your Hexo config:
deploy:
type: aws-s3
region: us-east-1
bucket: example-bucket
cloudfront_distribution: EXAMPLE123
Adding S3 webpage redirects is supported via entries in the Hexo config and via page front-matter.
⚠️ Any existing webpage redirects configured for the S3 bucket will get overwritten by the redirects generated by this plugin.
With a permalink
setting of :year/:month/:day/:title/
and the following front-matter:
---
title: Exciting Post
date: 2022-01-01 12:00:00
redirect_from: old-path.html
---
A redirect from old-path.html
to 2022/01/01/exciting-post
will be generated.
Additionally, redirects can be specified directly in the Hexo config:
deploy:
type: aws-s3
redirects:
'old.html': 'new-post'
'another.html': 'pages/something/new'
Will generate the following redirects:
-
old.html
tonew-post
. -
another.html
topages/something/new
.
Cache expiry durations can be defined on a per MIME type basis and are defined in seconds. Any unmatched MIME types will be served without a cache header.
For example:
deploy:
type: aws-s3
cache_policies:
text/css: 86400 # 24 hours
Will serve the following header for CSS files:
Cache-Control: public, max-age=86400;
Name | Default | Description |
---|---|---|
region |
required | AWS region that the bucket is hosted in. |
bucket |
required | AWS bucket to upload to. |
profile |
default |
AWS credentials profile to use (see Named Profiles). |
delete_unknown |
false |
If true then any unknown files will be deleted from the bucket. |
cloudfront_distribution |
none | CloudFront distribution ID to invalidate on deploy. |
redirects |
none | Mappings of from path → destination path that will get converted into redirect rules. |
host_name |
none | Domain name of the S3 website that will be used for redirects. |
cache_policies |
none | Map of MIME types to cache-expiry duration (in seconds). |